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二分查找详解
Sep 13 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
Apr 15 Python
Pycharm学习教程(2) 代码风格
May 02 Python
flask框架使用orm连接数据库的方法示例
Jul 16 Python
如何用Python实现简单的Markdown转换器
Jul 16 Python
教你利用Python玩转histogram直方图的五种方法
Jul 30 Python
Python设计模式之工厂方法模式实例详解
Jan 18 Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
Sep 29 Python
python创建子类的方法分析
Nov 28 Python
Python基于read(size)方法读取超大文件
Mar 12 Python
Python基于当前时间批量创建文件
May 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
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
探讨PHP调用时间格式的参数详解
2013/06/06 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
Zero Clipboard js+swf实现的复制功能使用方法
2010/03/07 Javascript
JavaScript Accessor实现说明
2010/12/06 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
创建、调用JavaScript对象的方法集锦
2014/12/24 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
Bootstrap Table使用整理(一)
2017/06/09 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
基于vue.js的分页插件详解
2017/11/27 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
2018/08/30 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
英语道歉信范文
2014/01/09 职场文书
代理人委托书
2014/08/01 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
2015建军节87周年演讲稿
2015/03/19 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
HTML5之高度塌陷问题的解决
2022/06/01 HTML / CSS
一文了解Java动态代理的原理及实现
2022/07/07 Java/Android
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL