|
给一个罗刚君的自定义函数解决方案供参考!!!
Excel有一个工作表函数Transpose可以将数组转置方向,在工作中举足轻重,常用数组的朋友自然深在体会。
例如,要将上图中A1:B9的值转一个方向,写入到D1:L2中去,可用以下代码:
Sub 转置方向()
Dim arr
arr = Range("a1:b9").Value
Range("D1").Resize(UBound(arr, 2), UBound(arr, 1)).Value = WorksheetFunction.Transpose(arr)
End Sub
然而该函数也有着3个缺陷,请听我为您一一道来。
其一,数组的行数或者列数大于65536时,Transpose函数无法转置成功。
其二,数组中某个元素的字符数量超过256时,Transpose函数无法转置成功。
其三,调用工作表函数Transpose转置数组的方向,在操作效率上偏低。
为此,我为您准备了一个自定义函数,可以同时解决以上三个问题,代码如下:
Function Zhuan(arr)
Dim Myarr()
If VBA.IsArray(arr) Then
ReDim Myarr(LBound(arr, 2) To UBound(arr, 2), LBound(arr, 1) To UBound(arr, 1))
For i = LBound(arr, 1) To UBound(arr, 1)
For j = LBound(arr, 2) To UBound(arr, 2)
Myarr(j, i) = arr(i, j)
Next
Next
Zhuan = Myarr
End If
End Function
|
评分
-
1
查看全部评分
-
|