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出现_warn_unsafe_extraction问题的方法
Mar 24 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
Jul 02 Python
Python实现图片尺寸缩放脚本
Mar 10 Python
python 把文件中的每一行以数组的元素放入数组中的方法
Apr 29 Python
numpy.linspace 生成等差数组的方法
Jul 02 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
Jul 10 Python
python配置文件写入过程详解
Oct 19 Python
Python类反射机制使用实例解析
Dec 30 Python
django 取消csrf限制的实例
Mar 13 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
Aug 05 Python
python 用pandas实现数据透视表功能
Dec 21 Python
深度学习详解之初试机器学习
Apr 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
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
php下载文件源代码(强制任意文件格式下载)
2014/05/09 PHP
php自定义hash函数实例
2015/05/05 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
js同时按下两个方向键
2007/12/01 Javascript
jquery 插件学习(二)
2012/08/06 Javascript
关于JavaScript中的关联数组分析
2013/04/09 Javascript
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
一道JS前端闭包面试题解析
2015/12/25 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
浅析微信小程序自定义日历组件及flex布局最后一行对齐问题
2020/10/29 Javascript
全网小程序接口请求封装实例代码
2020/11/06 Javascript
详解Vue 的异常处理机制
2020/11/30 Vue.js
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
python求列表交集的方法汇总
2014/11/10 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
Python datetime和unix时间戳之间相互转换的讲解
2019/04/01 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
巧用CSS3的calc()宽度计算做响应模式布局的方法
2018/03/22 HTML / CSS
致长跑运动员广播稿
2014/01/31 职场文书
优秀本科生求职推荐信
2014/02/24 职场文书
设备管理实施方案
2014/05/31 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
分公司总经理岗位职责
2014/08/03 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
运动会开幕式致辞
2015/07/29 职场文书
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python