Присвоить значения массиву на основе ячеек на листе - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь присвоить значения из столбца 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

Я получаю ошибку в цикле

"индекс вне диапазона".

У меня есть 14 строк в столбце A. Если я объявлю массив с 14 позициями / переменными, например так: Dim data (14), он работает. Однако я хочу, чтобы он был динамическим, чтобы я мог добавлять / удалять строки.

1 Ответ

1 голос
/ 21 октября 2019

цикл не требуется, просто назначьте целое массиву сразу

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...