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自动安装pip
Apr 24 Python
探究python中open函数的使用
Mar 01 Python
python获取当前用户的主目录路径方法(推荐)
Jan 12 Python
批量获取及验证HTTP代理的Python脚本
Apr 23 Python
3个用于数据科学的顶级Python库
Sep 29 Python
Python内置random模块生成随机数的方法
May 31 Python
python 消费 kafka 数据教程
Dec 21 Python
Python基础之函数基本用法与进阶详解
Jan 02 Python
Python QT组件库qtwidgets的使用
Nov 02 Python
python使用requests库爬取拉勾网招聘信息的实现
Nov 20 Python
python opencv人脸识别考勤系统的完整源码
Apr 26 Python
Python3中最常用的5种线程锁实例总结
Jul 07 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/16 PHP
深入Apache与Nginx的优缺点比较详解
2013/06/17 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
PHP中的流(streams)浅析
2015/07/02 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
转一个日期输入控件,支持FF
2007/04/27 Javascript
jquery 获取自定义属性(attr和prop)的实现代码
2012/06/27 Javascript
js中switch case循环实例代码
2013/12/30 Javascript
NodeJS学习笔记之(Url,QueryString,Path)模块
2015/01/13 NodeJs
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
2016/07/21 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
ES5 ES6中Array对象去除重复项的方法总结
2017/04/27 Javascript
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
Bootstrap 树控件使用经验分享(图文解说)
2017/11/06 Javascript
使用JS判断移动端手机横竖屏状态
2018/07/30 Javascript
详解可以用在VS Code中的正则表达式小技巧
2019/05/14 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
[01:17]Ti4 循环赛第一日回顾
2014/07/11 DOTA
Python isinstance函数介绍
2015/04/14 Python
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
Python使用email模块对邮件进行编码和解码的实例教程
2016/07/01 Python
Python 模拟登陆的两种实现方法
2017/08/10 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
基于python 微信小程序之获取已存在模板消息列表
2019/08/05 Python
Django 对象关系映射(ORM)源码详解
2019/08/06 Python
selenium+PhantomJS爬取豆瓣读书
2019/08/26 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
文化与传播毕业生求职信
2014/03/09 职场文书
法人授权委托书
2014/04/03 职场文书
社会学专业求职信
2014/07/17 职场文书
关于美容院的活动方案
2014/08/14 职场文书
2014年终个人总结报告
2015/03/09 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python