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 相关文章推荐
flask中使用SQLAlchemy进行辅助开发的代码
Feb 10 Python
Django在Win7下的安装及创建项目hello word简明教程
Jul 14 Python
Python IDE PyCharm的基本快捷键和配置简介
Nov 04 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 Python
Python线程同步的实现代码
Oct 03 Python
Pycharm简单使用教程(入门小结)
Jul 04 Python
python实现动态数组的示例代码
Jul 15 Python
Python列表的切片实例讲解
Aug 20 Python
python使用PIL剪切和拼接图片
Mar 23 Python
python中什么是面向对象
Jun 11 Python
Python爬虫基础讲解之请求
May 13 Python
pandas提升计算效率的一些方法汇总
May 30 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/12/13 PHP
PHP数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
PHP7 list() 函数修改
2021/03/09 PHP
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
一个可拖拽列宽表格实例演示
2012/11/26 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
jQuery中Nicescroll滚动条插件的用法
2016/11/10 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
2018/11/01 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
微信小程序生成分享海报方法(附带二维码生成)
2019/03/29 Javascript
Vue 3.0 前瞻Vue Function API新特性体验
2019/08/12 Javascript
[01:01:41]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第二场 1月31日
2021/03/11 DOTA
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
微信浏览器取消缓存的方法
2015/03/28 HTML / CSS
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
创新比赛获奖感言
2014/02/13 职场文书
cf收人广告词
2014/03/14 职场文书
中国入世承诺
2014/04/01 职场文书
个人批评与自我批评发言稿
2014/09/28 职场文书
初中信息技术教学计划
2015/01/22 职场文书
档案工作个人总结
2015/03/03 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
python实现股票历史数据可视化分析案例
2021/06/10 Python
Python 的 sum() Pythonic 的求和方法详细
2021/10/16 Python
MySQL数据库 安全管理
2022/05/06 MySQL