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 相关文章推荐
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
Apr 11 Python
python实现线程池的方法
Jun 30 Python
Python 闭包的使用方法
Sep 07 Python
python matplotlib 注释文本箭头简单代码示例
Jan 08 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
使用Python写一个小游戏
Apr 02 Python
python 文本单词提取和词频统计的实例
Dec 22 Python
使用Python调取任意数字资产钱包余额功能
Aug 15 Python
Python selenium模拟手动操作实现无人值守刷积分功能
May 13 Python
Keras实现DenseNet结构操作
Jul 06 Python
Pandas数据分析的一些常用小技巧
Feb 07 Python
Anaconda配置各版本Pytorch的实现
Aug 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实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
php实现用于删除整个目录的递归函数
2015/03/16 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
PHP7.3.10编译安装教程
2019/10/08 PHP
深入分析PHP设计模式
2020/06/15 PHP
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
ajax java 实现自动完成功能
2012/12/19 Javascript
js作用域及作用域链概念理解及使用
2013/04/15 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
jquery+javascript编写国籍控件
2015/02/12 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
2016/11/10 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
layui下拉框获取下拉值(select)的例子
2019/09/10 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
jQuery实现增删改查
2020/12/22 jQuery
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
解析Python中的异常处理
2015/04/28 Python
python代码实现ID3决策树算法
2017/12/20 Python
Python实现的计算器功能示例
2018/04/26 Python
python requests post多层字典的方法
2018/12/27 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
2020/06/02 Python
新闻记者个人求职的自我评价
2013/11/28 职场文书
办公室内勤工作职责
2013/12/11 职场文书
建筑总经理岗位职责
2014/02/02 职场文书
初三学习决心书
2014/03/11 职场文书
英语分层教学实施方案
2014/06/15 职场文书
市场督导岗位职责
2015/04/10 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
Go归并排序算法的实现方法
2022/04/06 Golang