如果需要一维数组按列的回填可以用下面的语句:MyRange.Value = Application.Transpose(Arr)具体代码如下: Sub MYNZG() '一维数组数据的转置回填方案 Dim Arr As Variant Dim MyRange As Range Sheets("SHEET4").Select Arr = Array("大象", "老虎", "狮子", "狐狸") Set MyRange = Range("A1") Set MyRange = MyRange.Resize(UBound(Arr) + 1, 1) MyRange.ClearContents MyRange.Value = Application.Transpose(Arr) MsgBox "ok!"End Sub代码截图:代码讲解:这里需要注意的是基准单元格区域的扩展语句变为:Resize(UBound(Arr) + 1, 1)这是列的扩展了,所以转置语句相应就是Application.Transpose(Arr) 。这里要注意点是调整大小的参数是反向的。
2 二维数组回填工作表时的转置(Transpose)
如果需要二维数组按列的回填可以用下面的语句:MyRange.Value = Application.Transpose(Arr)具体代码如下: Sub MYNZH() '二维数组数据的转置回填方案 Dim Arr As Variant Dim MyRange As Range Sheets("SHEET4").Select Arr = Sheets("SHEET2").Range("A1:b9") Set MyRange = Range("A1") Set MyRange = MyRange.Resize(UBound(Arr, 2), UBound(Arr, 1)) MyRange.ClearContents MyRange.Value = Application.Transpose(Arr) MsgBox "ok!"End Sub 代码截图如下:代码讲解:从工作表读取数组变量时,VBA将自动调整数组的大小,以保持工作表上的范围,所以不必关心数组的大小。但是,将数组从VBA写入工作表时,必须调整目标区域的大小以容纳数组。我们在前面的例子中已经看到了这一点。如果传递给工作表的数组小于其写入的范围,则未使用的单元格将出现“#N/A”错误。如果传递的数组大于其写入的范围,则将在右侧或底部截断该数组以适合该范围。 本节知识点回向:如何理解转置?一维数组和二维数组转置是如何利用的?