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 05 Python
跟老齐学Python之再深点,更懂list
Sep 20 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
Mar 19 Python
python 文件操作删除某行的实例
Sep 04 Python
python创建n行m列数组示例
Dec 02 Python
Python数据正态性检验实现过程
Apr 18 Python
python对接ihuyi实现短信验证码发送
May 10 Python
Python logging模块写入中文出现乱码
May 21 Python
浅谈pycharm导入pandas包遇到的问题及解决
Jun 01 Python
详解Python 函数参数的拆解
Sep 02 Python
PyQt5的QWebEngineView使用示例
Oct 20 Python
pandas中对文本类型数据的处理小结
Nov 01 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 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
显示、隐藏密码
2006/07/01 Javascript
悬浮数字的实现案例
2014/02/19 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
alert出数组中的随即值代码
2014/09/25 Javascript
jquery对象和DOM对象的任意相互转换
2016/02/21 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
[46:43]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第二局
2016/03/02 DOTA
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
linux下安装easy_install的方法
2013/02/10 Python
浅析python 中__name__ = '__main__' 的作用
2014/07/05 Python
回调函数的意义以及python实现实例
2017/06/20 Python
python的numpy模块安装不成功简单解决方法总结
2017/12/23 Python
pandas 对group进行聚合的例子
2019/12/27 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
西尔斯百货官网:Sears
2016/09/06 全球购物
N.Peal官网:来自伦敦的高档羊绒品牌
2018/10/29 全球购物
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
如何在存储过程中使用Loop
2016/01/05 面试题
2014年寒假社会实践活动心得体会
2014/04/07 职场文书
保密工作责任书
2014/04/16 职场文书
大学生安全责任书
2014/07/25 职场文书
离婚协议书范文2015
2015/01/26 职场文书
幼儿园教师心得体会范文
2016/01/21 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
Python中time与datetime模块使用方法详解
2022/03/31 Python