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写一个windows下的定时关机脚本(推荐)
Mar 21 Python
python利用有道翻译实现"语言翻译器"的功能实例
Nov 14 Python
解决python字典对值(值为列表)赋值出现重复的问题
Jan 20 Python
python学生管理系统
Jan 30 Python
在macOS上搭建python环境的实现方法
Aug 13 Python
python解释器spython使用及原理解析
Aug 24 Python
如何在VSCode下使用Jupyter的教程详解
Jul 13 Python
matplotlib图例legend语法及设置的方法
Jul 28 Python
python Matplotlib模块的使用
Sep 16 Python
python 进制转换 int、bin、oct、hex的原理
Jan 13 Python
一文读懂python Scrapy爬虫框架
Feb 24 Python
Python socket如何解析HTTP请求内容
Feb 12 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 显示指定路径下的图片
2009/10/29 PHP
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
一个PHP缓存类代码(附详细说明)
2011/06/09 PHP
php dirname(__FILE__) 获取当前文件的绝对路径
2011/06/28 PHP
LotusPhp笔记之:Cookie组件的使用详解
2013/05/06 PHP
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
php时间戳转换的示例
2014/03/31 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
JavaScript Event学习第六章 事件的访问
2010/02/07 Javascript
Jquery 点击按钮显示和隐藏层的代码
2011/07/25 Javascript
jquery 获取自定义属性(attr和prop)的实现代码
2012/06/27 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
JS FormData对象使用方法实例详解
2020/02/12 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
浅谈Python中带_的变量或函数命名
2017/12/04 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
英国森林假期:Forest Holidays
2021/01/01 全球购物
男方父母证婚词
2014/01/12 职场文书
荷叶圆圆教学反思
2014/02/01 职场文书
工程部岗位职责范本
2015/04/11 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
2015年中学校长工作总结
2015/05/19 职场文书
亮剑观后感300字
2015/06/05 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
Linux磁盘管理方法介绍
2022/06/01 Servers