arrays - 根据工作表中的单元格为数组赋值
问题描述
我正在尝试将 A 列中的值分配给数组。
我希望数组的大小是动态的。我想遍历每个单元格并将每个单元格值分配给我的数组。
Sub exercise3()
Dim asnwer
Dim output
Dim lastrow
Dim test
Dim i
Dim Data() As Variant 'Creating an dynamic array
Dim endnumber
lastrow = cells(Rows.Count, 1).End(xlUp).Row 'Find last row in column A
MsgBox (lastrow)
For i = 1 To lastrow
Data(i) = cells(i, "A").Value 'I want to assign each cell value to my array
Next i
MsgBox (Data(6))
Set output = cells(4, 4)
answer = WorksheetFunction.Average(Data)
output.Value = answer
End Sub
我的循环出现错误
“下标超出范围”。
我在 A 列中有 14 行。如果我声明具有 14 个位置/变量的数组,如下所示:Dim data (14),它正在工作。但是我希望它是动态的,所以我可以添加/删除行。
解决方案
不需要循环只需一次将整个分配给数组
Data = ActiveSheet.Range("A1:A" & lastrow).Value
那么你唯一需要记住的是它是一个 1 列的二维数组,所以:
msgbox Data(6,1)
Sub exercise3()
Dim asnwer As Double
Dim output As Range
Dim lastrow As Long
Dim Data() As Variant 'Creating an dynamic array
lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 'Find last row in column A
MsgBox lastrow
Data = ActiveSheet.Range("A1:A" & lastrow).Value
MsgBox Data(6, 1)
Set output = ActiveSheet.Cells(4, 4)
answer = WorksheetFunction.Average(Data)
output.Value = answer
End Sub