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列表去重的二种方法
Feb 14 Python
Python实现把回车符\r\n转换成\n
Apr 23 Python
按日期打印Python的Tornado框架中的日志的方法
May 02 Python
Python编写生成验证码的脚本的教程
May 04 Python
python实现批量改文件名称的方法
May 25 Python
简单的Apache+FastCGI+Django配置指南
Jul 22 Python
教你用Type Hint提高Python程序开发效率
Aug 08 Python
python运行其他程序的实现方法
Jul 14 Python
Python实现通过解析域名获取ip地址的方法分析
May 17 Python
python实现字符串完美拆分split()的方法
Jul 16 Python
Keras 加载已经训练好的模型进行预测操作
Jun 17 Python
使用pandas模块实现数据的标准化操作
May 14 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
用PHP读取IMAP邮件
2006/10/09 PHP
php Notice: Undefined index 错误提示解决方法
2010/08/29 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
php实现的网页版剪刀石头布游戏示例
2016/11/25 PHP
Django 中 cookie的使用
2017/08/17 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
JavaScript开发规范要求(规范化代码)
2010/08/16 Javascript
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
2017/01/13 Javascript
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
详解开发react应用最好用的脚手架 create-react-app
2018/04/24 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
Python函数返回不定数量的值方法
2019/01/22 Python
Python计算时间间隔(精确到微妙)的代码实例
2019/02/26 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
2019/10/01 Python
HTML5注册页面示例代码
2014/03/27 HTML / CSS
澳洲在线厨具商店:Kitchen Style
2018/05/05 全球购物
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
C语言50道问题
2014/10/23 面试题
国际贸易专业个人鉴定
2014/02/22 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL
SpringBoot使用AOP实现统计全局接口访问次数详解
2022/06/16 Java/Android