首页 > 解决方案 > 根据工作表中的单元格为数组赋值

问题描述

我正在尝试将 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),它正在工作。但是我希望它是动态的,所以我可以添加/删除行。

标签: arraysexcelvba

解决方案


不需要循环只需一次将整个分配给数组

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

推荐阅读