首页 > 解决方案 > 从二维数组中切片第一维

问题描述

我正在尝试对二维数组的第一维进行切片。数组变量是 y (1 to 36, 1 to 19) 我需要把它变成 y(1 to 12, 1 to 19) 要完成这样的任务,我必须像这样循环

    If rw > 0 Then

    ListBox1.AddItem
    ReDim v(1 To n, 1 To UBound(y, 2))

    Dim i As Long, j As Long
    For i = 1 To n
        For j = 1 To UBound(y, 2)
            v(i, j) = y(i, j)
        Next j
    Next i
    ListBox1.List = v()

    n = 0
End If

有没有更简单的方法来完成这样的任务而没有太多的循环?

标签: excelvba

解决方案


你可以使用转置():

Dim v As Variant, v1 As Variant

v = Range("A1").Resize(36, 19).Value' just to fill a 36x19 array


v1 = Application.Transpose(v)
ReDim Preserve v1(1 To UBound(v, 2), 1 To 12)
v = Application.Transpose(v1)

推荐阅读