Использование цикла for для добавления в массив в Excel VBA Basic - PullRequest
3 голосов
/ 24 октября 2019

Как мне перебрать лист, используя операторы IF, и для каждого TRUE добавить его в массив?

Базовый пример, если Cells(y, 1).Value больше 0, тогда добавить 1в массив и сделать это через заданный диапазон, создавая массив с несколькими значениями 1 (с учетом нескольких ячеек (y, 1). Значение (я) больше 0).

Вот как ясозданные петли раньше.

For y = 2 To LastRow

    On Error Resume Next
    If Cells(y, 1).Value > 0 Then   
        Cells(y, 2).Value = 1     ' Instead of populating Cells(y,2) with "1" IF true, I want to append the value to an array
    ElseIf Cells(y, 1).Value = 0 > 0 Then 
        Cells(y, 2).Value = 2
    Else
        Cells(y, 2).Value = 0
    End If

Next y

1 Ответ

3 голосов
/ 24 октября 2019

Вы должны сначала измерить массив

Dim myArray() as Integer

И внутри вашего цикла, отслеживать количество элементов, которые будет иметь массив

Dim myCount as Integer

Тогда внутри вашего цикла вы должныувеличьте этот счетчик и измените размер массива, чтобы вы могли добавить к нему

If Cells(y, 1).Value > 0 Then   
    myCount=myCount+1
    Redim Preserve myArray(1 to myCount)
    myArray(myCount)=1

Зарезервированное слово Preserve важно, поскольку оно предотвращает повторную инициализацию содержимого массива при добавлении в него элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...