У меня есть список из примерно 2500 строк, и я хочу проверить, есть ли в первом столбце слова "intern", за которыми следуют ":" (после: intern может быть любая позиция после) в цикле

Важная часть кода выглядит следующим образом:

For k = 1 To lastrowND
intern = Worksheets("new Data").Cells(k, 1).Value


If Not intern Like "*intern*:" Then

Однако эта команда ничего не фильтрует. Где моя ошибка?

большое спасибо

2 ответа2

4

Попробуйте использовать регулярные выражения, как это:

Dim strPattern As String: strPattern = "intern(.*?):"
Dim regEx As New RegExp

' ...

With regEx
     .Global = True
     .IgnoreCase = False
     .Pattern = strPattern
End With

For k = 1 To lastrowND
   intern = Worksheets("new Data").Cells(k, 1).Value

   If Not regEx.Test(intern) Then
   ' ...
4

Если в ваших данных есть что-то после двоеточия, вам понадобится дополнительная * для проверки истинности. ( *intern*:* )

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .