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获取糗百图片代码实例
Dec 18 Python
Python3基础之输入和输出实例分析
Aug 18 Python
python实现人脸识别代码
Nov 08 Python
Windows下将Python文件打包成.EXE可执行文件的方法
Aug 03 Python
浅谈Pandas Series 和 Numpy array中的相同点
Jun 28 Python
使用Python画出小人发射爱心的代码
Nov 23 Python
Django多数据库配置及逆向生成model教程
Mar 28 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
Aug 19 Python
pycharm永久激活超详细教程
Oct 29 Python
浅谈Selenium 控制浏览器的常用方法
Dec 04 Python
python 三种方法提取pdf中的图片
Feb 07 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 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
用文本作数据处理
2006/10/09 PHP
我的论坛源代码(五)
2006/10/09 PHP
使用PHP 5.0创建图形的巧妙方法
2010/10/12 PHP
处理单名多值表单的详解
2013/06/08 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
ASP 过滤数组重复数据函数(加强版)
2010/05/31 Javascript
javascript中万恶的function实例分析
2011/05/25 Javascript
jQuery中contents()方法用法实例
2015/01/08 Javascript
jquery实现的用户注册表单提示操作效果代码分享
2015/08/28 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
如何使用JS在HTML中自定义字符串格式化
2017/07/20 Javascript
微信小程序 按钮滑动的实现方法
2017/09/27 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
easyUI使用分页过滤器对数据进行分页操作实例分析
2020/06/01 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
Python中MySQL数据迁移到MongoDB脚本的方法
2016/04/28 Python
Python缩进和冒号详解
2016/06/01 Python
python去除文件中重复的行实例
2018/06/29 Python
深入学习python多线程与GIL
2019/08/26 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
工作室成员个人发展规划范文
2014/01/24 职场文书
网上卖盒饭创业计划书
2014/01/26 职场文书
护士自我鉴定怎么写
2014/02/07 职场文书
上班玩游戏检讨书
2014/02/07 职场文书
股权转让协议书
2014/12/07 职场文书
储备店长岗位职责
2015/04/14 职场文书
培训通知
2015/04/17 职场文书
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis
图神经网络GNN算法
2022/05/11 Python
css弧边选项卡的项目实践
2023/05/07 HTML / CSS