У меня есть таблица, где столбец B имеет данные, некоторые из которых являются «Порт». Столбец C имеет спецификацию. Мне нужно сделать макрос, который выполняет итерацию через столбец B и для тех ячеек, которые содержат «Порт». И этот порт отличается от 22, 3181 или 3389, он меняет значение ячейки в столбце B на «Порт +».Изменение значения ячейки на основе смежного значения ячейки
форматирования в колонке с меняется, так что он может быть "Port22, port22, port_22" и т.д. Пример ниже:
| Порт | Порт3181
| Порт | port_3389
| URL | abcd
| SQL | qwerty
| Порт | Порт 5900
| Порт | Port22
У меня есть часть кода, которая работает для определенного порта, но я не знаю, как это сделать, чтобы включить все 3 из вышеуказанных портов в критерии.
If ActiveCell Like "Port" And Not ActiveCell.Offset(0, 1) Like "*3181*" Then ActiveCell.FormulaR1C1 = "Port+"
Это кажется довольно неуклюжим, хотя, может быть, кто-то знает лучший способ это сделать? У меня есть несколько листов, в которых изменяется последняя строка, поэтому я хотел бы сделать секцию цикла как-то динамичной, поэтому я могу использовать один и тот же макрос для всех листов.
EDIT:
Ну вот что я придумал:
Dim i As Integer
i = 1
Do
i = i + 1
If InStr(1, ActiveCell.Value, "Port", vbTextCompare) > 0 And ActiveCell.Offset(0, 1) Like "*22*" _
Or ActiveCell.Offset(0, 1) Like "*3181*" Or ActiveCell.Offset(0, 1) Like "*3389*" _
Then ActiveCell.FormulaR1C1 = "Port" Else ActiveCell.FormulaR1C1 = "Port+"
ActiveCell.Offset(1, 0).Select
Loop Until i = 40
Он сейчас работает в том смысле, что она изменяет ячейку в столбце B в Порт +, когда порт что-то другое, чем 3. Однако он также меняет записи, не связанные с портами, где столбец B имеет что-то еще, кроме «Порт» для порта +.