VBA Excel:将大数组粘贴到范围

时间:2014-07-29 16:04:12

标签: excel vba excel-vba

我在VBA工作,为excel工作。我有一个名为“aKey”的数组(1到137,000个字符串,但确切的大小可能会发生变化,因此使代码通用是必要的)。我需要将aKey粘贴到工作表的第一列。到目前为止我已经尝试过      Range(.Offset(1,0),.Offset(UBound(aKey)+1,0)).Value = aKey 但这似乎只能粘贴数组第一个条目的137,000个版本。 我也试过了      Range(.Offset(1,0),.Offset(UBound(aKey)+1,0)).Value = WorksheetFunction.Transpose(aKey)  这也没用。通过谷歌搜索,我发现Transpose功能的粘贴大小有限,这可能是那里的问题。有人知道一种方法来实现我的目标吗?感谢

2 个答案:

答案 0 :(得分:0)

Sub Tester()

    Dim a1(), a2(), i As Long, ub As Long

    ReDim a1(1 To 1, 1 To 137000)
    'load source array ("wrong" shape)
    For i = 1 To 137000
        a1(1, i) = i
    Next i

    ub = UBound(a1, 2)

    ReDim a2(1 To ub, 1 To 1) 'resize a2 ("right" shape) to match a1

    ' "flip" the a1 array into a2 
    For i = 1 To ub
        a2(i, 1) = a1(1, i)
    Next i

    'drop a2 to worksheet
    ActiveSheet.Range("a1").Resize(ub, 1).Value = a2

End Sub

答案 1 :(得分:0)

以下是为单个列创建数组并将其放在列中的示例:

Sub qwerty()
Dim aKey(1 To 137000, 1 To 1) As Variant

For i = 1 To 137000
    aKey(i, 1) = Rnd
Next i

Range("A1:A137000") = aKey
End Sub