Transpose 数组行列转置的限制方式


Posted in Python onFebruary 11, 2020

提到数组,大家都不陌生,什么是数组行列转置呢?其实也很简单,如下图所示,行列转置就是将数组元素的存放方式进行转换,原来保存在第一列的数据,将保持在新数组的第一行,并且保持原有顺序,即6在第一个位置,8在最后一个位置。其他列依次类推。

Transpose 数组行列转置的限制方式

在Excel工作表中有个强大的函数Transpose,可以直接实现数组行列转置,作为VBA开发者来说,肯定不会忘记用这个。

Sub Demo1()
  Dim aData(1 To 3, 1 To 2)
  For i = 1 To 3
    For j = 1 To 2
      aData(i, j) = i + j * 5
    Next j
  Next i
  aTrans = Application.Transpose(aData)
  Debug.Print UBound(aData, 1) & " x "; UBound(aData, 2)
  Debug.Print "=>>"
  Debug.Print UBound(aTrans, 1) & " x "; UBound(aTrans, 2)
End Sub

一句代码轻松实现转置,比很多程序开发语言都要简单,在本地窗口中可以看到转置效果。

Transpose 数组行列转置的限制方式

这么好用的神奇代码,有时会莫名其妙的罢工,我们来看看下面的代码,运行代码将给出“类型不匹配”的错误提示,错误号为“13”。

Sub Demo2()
  Dim aData(1 To 3, 1 To 2)
  For i = 1 To 3
    For j = 1 To 2
      aData(i, j) = i + j * 5
    Next j
  Next i
  aData(1, 1) = Application.Rept("$", 256)
  aTrans = Application.Transpose(aData)  ' Runtime error "13"
  Debug.Print UBound(aData, 1) & " x "; UBound(aData, 2)
  Debug.Print "=>>"
  Debug.Print UBound(aTrans, 1) & " x "; UBound(aTrans, 2)
End Sub

转置失败的原因在于aData(1,1)的字符长度为256,Transpose所能够处理的数组元素字符长度最大为255。有时就是需要处理这样的数组元素,那么我们可以使用自定义函数进行数组的行列转置。TrasnposeArray可以实现二维数组的行列转置。其效果与Transpose函数相同。

Sub Demo3()
  Dim aData(1 To 3, 1 To 2)
  For i = 1 To 3
    For j = 1 To 2
      aData(i, j) = i + j * 5
    Next j
  Next i
  aData(1, 1) = Application.Rept("$", 256)
  aTrans = TransposeArray(aData)
  Debug.Print UBound(aData, 1) & " x "; UBound(aData, 2)
  Debug.Print "=>>"
  Debug.Print UBound(aTrans, 1) & " x "; UBound(aTrans, 2)
End Sub
 
Function TransposeArray(arrA) As Variant
  Dim aRes()
  If VBA.IsArray(arrA) Then
    ReDim aRes(LBound(arrA, 2) To UBound(arrA, 2), LBound(arrA, 1) To UBound(arrA, 1))
    For i = LBound(arrA, 1) To UBound(arrA, 1)
      For j = LBound(arrA, 2) To UBound(arrA, 2)
        aRes(j, i) = arrA(i, j)
      Next
    Next
    TransposeArray = aRes
  End If
End Function

补充说明一点,由于Transpose本身是工作表函数,因此大家使用时,需要注意它的另一个限制,就是被转置数组的最大行数是65,536。

以上这篇Transpose 数组行列转置的限制方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
老生常谈python之鸭子类和多态
Jun 13 Python
TensorFlow实现卷积神经网络CNN
Mar 09 Python
浅谈python的输入输出,注释,基本数据类型
Apr 02 Python
Python转换时间的图文方法
Jul 01 Python
用Anaconda安装本地python包的方法及路径问题(图文)
Jul 16 Python
详解使用django-mama-cas快速搭建CAS服务的实现
Oct 30 Python
python3实现用turtle模块画一棵随机樱花树
Nov 21 Python
pytorch实现onehot编码转为普通label标签
Jan 02 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
Apr 20 Python
python 数据库查询返回list或tuple实例
May 15 Python
pyecharts调整图例与各板块的位置间距实例
May 16 Python
python如何查看安装了的模块
Jun 23 Python
Tensorflow:转置函数 transpose的使用详解
Feb 11 #Python
tensorflow多维张量计算实例
Feb 11 #Python
python误差棒图errorbar()函数实例解析
Feb 11 #Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
Feb 11 #Python
python scatter函数用法实例详解
Feb 11 #Python
python可视化text()函数使用详解
Feb 11 #Python
python读取图片的几种方式及图像宽和高的存储顺序
Feb 11 #Python
You might like
PHP无限分类的类
2007/01/02 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
2013/06/23 PHP
phpstrom使用xdebug配置方法
2013/12/17 PHP
php bootstrap实现简单登录
2016/03/08 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
jQuery 拖动层(在可视区域范围内)
2012/05/24 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
2017/12/15 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
Vue动态创建注册component的实例代码
2019/06/14 Javascript
vue实现简易图片左右旋转,上一张,下一张组件案例
2020/07/31 Javascript
vue3.0 上手体验
2020/09/21 Javascript
python pickle 和 shelve模块的用法
2013/09/16 Python
Python实现多线程下载文件的代码实例
2014/06/01 Python
Python库urllib与urllib2主要区别分析
2014/07/13 Python
举例讲解Python中的死锁、可重入锁和互斥锁
2015/11/05 Python
Python实现各种排序算法的代码示例总结
2015/12/11 Python
Django Highcharts制作图表
2016/08/27 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
python里glob模块知识点总结
2021/01/05 Python
Python实现石头剪刀布游戏
2021/01/20 Python
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
介绍Java的内部类
2012/10/27 面试题
团支书的期末学习总结自我评价
2013/11/01 职场文书
生产经理的自我评价分享
2013/11/07 职场文书
企业财务人员岗位职责
2015/04/14 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
uniapp开发小程序的经验总结
2021/04/08 Javascript
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS