• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Transpose 数组行列转置的限制方式

python 搞代码 4年前 (2022-01-07) 85次浏览 已收录 0个评论

今天小编就为大家分享一篇Transpose 数组行列转置的限制方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

提到数组,大家都不陌生,什么是数组行列转置呢?其实也很简单,如下图所示,行列转置就是将数组元素的存放方式进行转换,原来保存在第一列的数据,将保持在新数组的第一行,并且保持原有顺序,即6在第一个位置,8在最后一个位置。其他列依次类推。

在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

一句代码轻松实现转置,比很多程序开发语言都要简单,在本地窗口中可以看到转置效果。

这么好用的神奇代码,有时会莫名其妙的罢工,我们来看看下面的代码,运行代码将给出“类型不匹配”的错误提示,错误号为“13”。

 Sub Demo2() Dim aData(1 To 3, 1 To 2) For <mark style="color:transparent">来源gaodaimacom搞#代%码网</mark>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 数组行列转置的限制方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持gaodaima搞代码网

以上就是Transpose 数组行列转置的限制方式的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Transpose 数组行列转置的限制方式

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址