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之使用Python操作数据库(1)
Nov 25 Python
Python实现查找系统盘中需要找的字符
Jul 14 Python
详解Python的collections模块中的deque双端队列结构
Jul 07 Python
Python中input与raw_input 之间的比较
Aug 20 Python
python接口自动化测试之接口数据依赖的实现方法
Apr 26 Python
python通过SSH登陆linux并操作的实现
Oct 10 Python
python 通过手机号识别出对应的微信性别(实例代码)
Dec 22 Python
Python tkinter模版代码实例
Feb 05 Python
Python更新所有已安装包的操作
Feb 13 Python
python多项式拟合之np.polyfit 和 np.polyld详解
Feb 18 Python
python uuid生成唯一id或str的最简单案例
Jan 13 Python
Python文件的操作示例的详细讲解
Apr 08 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抽象工厂模式(Elgg)
2010/03/21 PHP
PHP对象递归引用造成内存泄漏分析
2014/08/28 PHP
PHP使用Nginx实现反向代理
2017/09/20 PHP
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
2007/01/09 Javascript
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
javaScript实现浮点数转十六进制字符
2013/10/29 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
2014/07/28 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
老生常谈jquery中detach()和remove()的区别
2017/03/02 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
浅谈Angular4中常用管道
2017/09/27 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
vue-cli 为项目设置别名的方法
2019/10/15 Javascript
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
Python程序语言快速上手教程
2012/07/18 Python
详解python 拆包可迭代数据如tuple, list
2017/12/29 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
Python PyQt5模块实现窗口GUI界面代码实例
2020/05/12 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
阿玛尼美妆俄罗斯官网:Giorgio Armani Beauty RU
2020/07/19 全球购物
读书小明星事迹材料
2014/05/03 职场文书
项目经理任命书
2014/06/04 职场文书
教师民族团结演讲稿
2014/08/27 职场文书
党支部三会一课计划
2014/09/24 职场文书
单位婚育证明范本
2014/11/21 职场文书
工伤私了协议书范本
2014/11/24 职场文书
实习工作表现评语
2014/12/31 职场文书
家属答谢词
2015/01/05 职场文书
应聘教师求职信范文
2015/03/20 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
拔河比赛队名及霸气口号
2015/12/24 职场文书
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers