如何在VBA中粘贴2D数组的一部分?

时间:2017-11-29 19:23:40

标签: arrays vba excel-vba excel

如果我有这样的2D数组:

        myArray(0, 0) = 69
        myArray(1, 0) = 69
        myArray(0, 1) = 1234
        myArray(0, 1) = 12345

有没有办法只将myArray(,1)粘贴到Range(" A1:A2")而不使用循环?我知道你可以粘贴

  

范围(" A1:B2")= myArray

非常容易。

我将拥有170,000多个阵列列,因此我不想使用循环,因为每次我需要超过35分钟 我更喜欢保持尺寸,而不是将2D阵列更改为两个1D阵列并粘贴。

1 个答案:

答案 0 :(得分:0)

方式

您可以使用Application.Index从列中获取列值并将其写回范围。

<强>代码

Sub testArCol2Row()
Dim myArray(0 To 2, 0 To 1)
Dim ws   As Worksheet
Set ws = ThisWorkbook.Worksheets("MySheet")
Dim j As Long           ' Column number -- ONE BASED !!
j = 2                   ' <<<    change column number here
' example data
  myArray(0, 0) = 69
  myArray(1, 0) = 70
  myArray(2, 0) = 71
  myArray(0, 1) = 1234
  myArray(1, 1) = 12345
  myArray(2, 1) = 123456
' a) write both columns to range (just to compare values)
  ws.Range("E1:F3") = myArray
' get 2nd column into Array
  v = Application.Index(myArray, , j)
' b) write ONLY 2nd column (j=2) to range (column number -- ONE based if using index function)
  ws.Range("A1:A3") = v
End Sub

<强>提示

您可以使用Application.Transpose

更改行 - 列顺序