#excel #vba #if-statement
#excel #vba #if-оператор
Вопрос:
Пожалуйста, не подумайте, что это один из первых написанных мной VBA-кодов. То, что я написал, было смесью цикла и функции If. Предполагалось, что код будет проходить через столбец («AC»), если он найдет пустую ячейку. Он просматривает ту же строку, но в столбце D. Столбец D будет иметь 350 возможных значений. Если значение столбца D равно «одному из 350 возможных значений», тогда укажите «EU» ElseIf … это продолжается для всех 350
Dim i As Long
i = 1
Do While Cells(i, "AC").Value <> ""
If Cells(i, "D").Value = "OPP-1305-9066" Then
Cells(i, "AC").Value = EU
ElseIf Cells(i, "D").Value = "OPP-1305-0773" Then
Cells(i, "AC").Value = EU
ElseIf Cells(i, "D").Value = "another one of 350" Then
Cells(i, "AC").Value = EU
End If
i = i 1
Loop
Комментарии:
1. Если эти 350 значений фиксированы, то сохраните их на листе и считайте в массив, а затем используйте этот массив для сравнения в цикле вместо записи 350
IF
строк2. Для If
Cells(i, "AC").Value
будет установлено значениеEU
(или должно быть"EU"
?) независимо от значения, зачем вообще иметь одно условие? Рассмотрите возможность использования списка проверки данных в столбце D, чтобы ограничить значения допустимыми (которые вы храните в отдельной таблице с 350 строками, затем определите именованный диапазон, чтобы заключить столбец, содержащий 350 значений, и использовать этот именованный диапазон в качестве вашего «списка» для проверки данных. Бац, пропала тысяча строк кода.
Ответ №1:
Не уверен, в чем суть ваших вопросов, но если EU не является переменной, вам не хватает скобок. Кроме того, вы выполняете цикл только тогда, когда столбец AC не пуст, поэтому, если AC2 пуст, но после ячейки AC4 есть еще данные, вы не проверяете это.
И самое главное, 350 операторов elseif, вау! 🙂 Вам будет полезно узнать о массивах / коллекциях.