如果我有这样的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阵列并粘贴。
答案 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