Оператор If, повторяющийся по всему столбцу макроса VBA

#excel #vba

#excel #vba

Вопрос:

Я хочу создать макрос для перебора столбца и изменения значения в отдельном столбце, если параметр встречается в определенной ячейке из первого столбца. Вот что у меня есть:

 If Range(AB) <> 0 Then
    AD = "Basketball"
Else
    AD = "Football"
End If
  

Как мне установить диапазон для моих ячеек как общий при выполнении итерации по всему столбцу?

Комментарии:

1. Взгляните на For цикл, который должен вам помочь.

Ответ №1:

Обратите внимание, что это можно сделать и с помощью формул, и в VBA нет необходимости. В большинстве случаев формулы выполняются быстрее, чем при использовании VBA, поскольку VBA не поддерживает многопоточность.

Формула

Поэтому просто добавьте эту формулу в столбец AD:

 =If(AB:AB<>0, "Basketball", "Football")
  

VBA

Общая структура будет использовать For цикл:

 Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1") 'reference your sheet

Dim LastRow As Long  'find last used row in column A. Adjust column to your needs
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

Dim iRow As Long
For iRow = 1 To LastRow  'loop from first to last row and do the following in each row
    If ws.Cells(iRow, "AB").Value <> 0 Then
        ws.Cells(iRow, "AD").Value = "Basketball"
    Else
        ws.Cells(iRow, "AD").Value = "Football"
    End If
Next iRow