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下的多进程编程
Apr 28 Python
Python科学计算之Pandas详解
Jan 15 Python
Python中str is not callable问题详解及解决办法
Feb 10 Python
Python的mysql数据库的更新如何实现
Jul 31 Python
用matplotlib画等高线图详解
Dec 14 Python
Python实现学生成绩管理系统
Apr 05 Python
使用python语言,比较两个字符串是否相同的实例
Jun 29 Python
python批量从es取数据的方法(文档数超过10000)
Dec 27 Python
Django调用支付宝接口代码实例详解
Apr 04 Python
django 装饰器 检测登录状态操作
Jul 02 Python
Python趣味挑战之给幼儿园弟弟生成1000道算术题
May 28 Python
Python OpenCV之常用滤波器使用详解
Apr 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函数(ignore_user_abort)
2012/08/01 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
[Web]防止用户复制页面内容和另存页面的方法
2009/02/06 Javascript
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
Javascript学习笔记1 数据类型
2010/01/11 Javascript
基于jQuery的表格操作插件
2010/04/22 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
Prototype源码浅析 Enumerable部分(二)
2012/01/18 Javascript
ejs v9 javascript模板系统
2012/03/21 Javascript
js读写json文件实例代码
2014/10/21 Javascript
jQuery中:file选择器用法实例
2015/01/04 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
Node.js实现简单管理系统
2019/09/23 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
Vue开发中常见的套路和技巧总结
2020/11/24 Vue.js
[01:00]DOTA2 store: Collection of Artisan's Wonders
2015/08/12 DOTA
c++生成dll使用python调用dll的方法
2014/01/20 Python
Python中获取网页状态码的两个方法
2014/11/03 Python
python实现多线程行情抓取工具的方法
2018/02/28 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
Python3爬虫之自动查询天气并实现语音播报
2019/02/21 Python
keras训练浅层卷积网络并保存和加载模型实例
2020/07/02 Python
法学毕业生自荐信
2013/11/13 职场文书
公共机构节能宣传周活动总结
2014/07/09 职场文书
2014年党员整改措施范文
2014/09/21 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
请假条应该怎么写?
2019/06/24 职场文书
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫