首页 > 解决方案 > VBA 手动移调

问题描述

所以我注意到 Application.transpose 不超过 255 个字符,我的数组包含超过 300 个字符左右。是否有手动或其他方式来转置数组?目前我使用

Function Transpose(arrIn) As String()
    Dim arrOut() As String, r As Long, ln As Long, i As Long

    ln = (UBound(arrIn) - LBound(arrIn)) + 1
    ReDim arrOut(1 To ln, 1 To 1)
    i = 1
    For r = LBound(arrIn) To UBound(arrIn)
        arrOut(i, 1) = arrIn(r)
        i = i + 1
    Next r
    Transpose = arrOut

End Function

但我注意到这只需要一个 1D 数组并将其转置,但我必须能够从 1D 转到 2D 和虎钳。有谁知道如何以有效的方式做到这一点?

更新:这是我目前使用的,但我认为它需要一些改进。

Function Transpose1(arrIn) As String()
    Dim arrOut() As String, r As Long, ln As Long, i As Long

    ln = (UBound(arrIn) - LBound(arrIn)) + 1
    ReDim arrOut(1 To ln)
    i = 1
    For r = LBound(arrIn) To UBound(arrIn)
        arrOut(i) = arrIn(r, UBound(arrIn, 2))
        i = i + 1
    Next r
    Transpose1 = arrOut

End Function


' From one 2 two
Function Transpose2(arrIn) As String()
    Dim arrOut() As String, r As Long, ln As Long, i As Long

    ln = (UBound(arrIn) - LBound(arrIn)) + 1
    ReDim arrOut(1 To ln, 1 To 1)
    i = 1
    For r = LBound(arrIn) To UBound(arrIn)
        arrOut(i, 1) = arrIn(r)
        i = i + 1
    Next r
    Transpose2 = arrOut

End Function

标签: excelvbatranspose

解决方案


推荐阅读