为什么我有问题分配一个数组到一个范围
为什么我的数组的第一个项目被分配到范围内的所有单元格?
Private Sub sample() Dim arr() As Double, rng As Range, i As Double ReDim arr(1 To 100) For i = 1 To 100 arr(i) = i * Rnd Next i Set rng = Range("A1:A100") rng.Value = arr End Sub
基于本地窗口,我的数组已按预期填充:
但是,当数组被分配给范围,它将第一个值分配给所有单元格:
为了将数组分配给一个范围, 数组需要被声明为一个二维数组。 即使二维只有一个元素:
ReDim arr(1 To 100, 1 To 1)
工作示例如下所示:
Private Sub sample() Dim arr() As Double, rng As Range, i As Double ReDim arr(1 To 100, 1 To 1) For i = 1 To 100 arr(i, 1) = i * Rnd Next i Set rng = Range("A1:A100") rng.Value = arr End Sub
该数组是一个水平的1维数组,需要将其转换为垂直的1维数组:
Private Sub sample() Dim arr() As Double, rng As Range, i As Double ReDim arr(1 To 100) For i = 1 To 100 arr(i) = i * Rnd Next i Set rng = Range("A1:A100") rng.Value = Application.Transpose(arr) End Sub
唯一需要注意的是,如果有大约64,500个元素,那么需要用循环手动完成转置。
尝试这个:
Sub sample() Dim arr() As Double, rng As Range, i As Double ReDim arr(1 To 100) Set rng = Range("A1:A100") For i = 1 To 100 arr(i) = i * Rnd rng.Cells(i, 1).Value = arr(i) Next i End Sub