VBA для проверки того, содержит ли строка другую строку в Excel (6 методов)

  • Поделись Этим
Hugh West

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

Скачать шаблон практики

Бесплатный практический шаблон Excel можно скачать отсюда.

VBA для проверки, содержит ли строка значение.xlsm

6 методов в VBA для проверки того, содержит ли строка другую строку в Excel

Ниже, в этом разделе, вы найдете 6 эффективных методов, как реализовать VBA чтобы проверить, содержит ли строка другую строку или нет.

1. VBA для проверки наличия в строке подстроки

Ниже приведен пример функция InStr чтобы найти, содержит ли строка подстроку в Excel.

Шаги:

  • Нажмите Alt + F11 на клавиатуре или перейдите на вкладку Разработчик -> Visual Basic открыть Редактор Visual Basic .

  • Во всплывающем окне кода в строке меню нажмите кнопку Вставка -> Модуль .

  • В окне кода скопируйте следующий код и вставьте его.
 Public Sub ContainSub() If InStr("Movie: Iron Man, Batman, Superman, Spiderman, Thor", "Hulk")> 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" End If End Sub 

Теперь ваш код готов к выполнению.

  • Запускайте макрос.

Если ваш строка содержит подстроку то вы получите найденное совпадение, в противном случае будет возвращено "совпадений не найдено".

В нашем примере мы хотели выяснить, является ли наша первичная строка " Фильм: Железный человек, Бэтмен, Супермен, Человек-паук, Тор " содержит слово " Халк " или нет. Поскольку нет, мы получаем Фильм не найден результат.

2. VBA для проверки, содержит ли строка число

Вы можете искать, содержат ли строки числа или нет, с помощью функции VBA код.

Посмотрите на следующий пример, в котором мы найдем, в каких строках содержатся числа с названиями фильмов.

Шаги для проверки наличия в строках чисел с помощью VBA приведены ниже.

Шаги:

  • Так же, как и раньше, откройте Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • В окне кода скопируйте следующий код и вставьте его.
 Function SearchNumbers(oRng As Range) As Boolean Dim bSearchNumbers As Boolean, i As Long bSearchNumbers = False For i = 1 To Len(oRng.Text) If IsNumeric(Mid(oRng.Text, i, 1)) Then bSearchNumbers = True Exit For End If Next SearchNumbers = bSearchNumbers End Function 
  • Это не подпроцедура для VBA программа для запуска, это создание Функция, определяемая пользователем (UDF), который мы будем вызывать в нашем рабочем листе для выполнения задания. Итак, после написания кода, вместо того, чтобы щелкнуть по кнопке Запускайте нажмите на кнопку Сохранить в строке меню, чтобы сохранить файл макроса.
  • Теперь вернитесь к интересующему вас рабочему листу и напишите пользовательскую функцию, которую вы только что создали, в строке VBA код ( SearchNumber , в первой строке кода) и внутри скобок функции введите номер ссылки на ячейку строки, в которой есть ведущие числа (например. Клетка B5 ).
  • Нажмите Войти .

Вы получите булево значение ( TRUE или Ложь ), если строка в ячейке содержит числа, то вы получите TRUE , иначе FALSE .

  • Перетащите ячейку вниз на Наполнительная рукоятка применить формулу к остальным ячейкам, чтобы проверить, какая строка содержит числа, а какая нет.

3. VBA для извлечения чисел из строки

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

Шаги для проверки наличия в строках чисел и их извлечения с помощью VBA приведены ниже.

Шаги:

  • Открыть Редактор Visual Basic из Разработчик вкладка и Вставка a UserForm на этот раз с вкладки Insert в окне кода.
  • Из появившихся Ящик для инструментов , перетаскивание CommandButton в UserForm .

  • Двойной щелчок на кнопке, скопируйте следующий код и вставьте его.
 Private Sub CommandButton1_Click() Worksheets("Number").Range("C2:C15").ClearContents checkNumber (Worksheets("Number").Range("B2:B15")) End Sub Sub checkNumber(objRange As Range) Dim myAccessary As Variant Dim i As Long Dim iRow As Long iRow = 2 For Each myAccessary In objRange For i = 1 To Len(myAccessary.Value) If IsNumeric(Mid(myAccessary.Value, i,1)) Then If Trim(objRange.Cells(objRange.Row - 1, 2)) "" Then objRange.Cells(iRow - 1, 2) = _ objRange.Cells(iRow - 1, 2) & Mid(myAccessary.Text, i, 1) Else objRange.Cells(iRow - 1, 2) = Mid(myAccessary.Text, i, 1) End If End If Next i iRow = iRow + 1Next myAccessary End Sub 
  • Запускайте код, и он приведет вас к интересующему рабочему листу.
  • Щелкните на командной кнопке и вы получите извлеченный номер из строк.

4. VBA для проверки, содержит ли строка определенную букву

Этот метод почти аналогичен методу проверки подстроки в строке.

Ниже приводится InStr функция, позволяющая найти, содержит ли строка определенную букву в Excel.

Шаги:

  • Так же, как и раньше, откройте Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • В окне кода скопируйте следующий код и вставьте его.
 Public Sub ContainChar() If InStr("Фильм: Железный человек, Бэтмен, Супермен, Человек-паук, Тор", "Z")> 0 Then MsgBox "Письмо найдено" Else MsgBox "Письмо не найдено" End If End Sub 

Теперь ваш код готов к выполнению.

  • Запускайте программу. Если ваш строка содержит букву то вы получите найденное совпадение, в противном случае будет возвращено "совпадений не найдено".

В нашем примере мы хотели выяснить, является ли наша первичная строка " Фильм: Железный человек, Бэтмен, Супермен, Человек-паук, Тор " содержит букву " Z " или нет. Поскольку нет, мы получаем Письмо не найдено результат.

5. VBA для проверки, содержит ли диапазон строк другую строку

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

Шаги:

  • Открыть Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • В окне кода скопируйте следующий код и вставьте его.
 Public Sub ContainsSub() If InStr(ActiveSheet.Select, "Hulk")> 0 Then MsgBox "Фильм найден" Else MsgBox "Фильм не найден" End If End Sub 

Теперь ваш код готов к выполнению.

  • Запускайте код.

Если ваш диапазон строка содержит подстроку то вы получите найденное совпадение, в противном случае будет возвращено "совпадений не найдено".

6. VBA для извлечения строк из строки

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

Мы извлечем информацию об именах, начинающихся с " Крис " из следующего набора данных.

Шаги :

  • Открыть Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
  • В окне кода скопируйте следующий код и вставьте его.
 Sub SearchSub() Dim lastrow As Long Dim i As Integer, count As Integer lastrow = ActiveSheet.Range("A30000").End(xlUp).Row For i = 1 To lastrow If InStr(1, LCase(Range("C" & i)), "Chris") 0 Then count = count + 1 Range("F" & count & ":H" & count) = Range("B" & i & ":D" & i).Value End If Next i End Sub 

Теперь ваш код готов к выполнению.

  • Запускайте код.

Только имена, начинающиеся с " Крис " будут сохранены в заранее определенных ячейках.

Хью Уэст — опытный тренер и аналитик Excel с более чем 10-летним опытом работы в отрасли. Он имеет степень бакалавра в области бухгалтерского учета и финансов и степень магистра делового администрирования. Хью страстно любит преподавать и разработал уникальный подход к обучению, которому легко следовать и который легко понять. Его экспертные знания Excel помогли тысячам студентов и специалистов по всему миру улучшить свои навыки и преуспеть в своей карьере. В своем блоге Хью делится своими знаниями со всем миром, предлагая бесплатные учебные пособия по Excel и онлайн-обучение, чтобы помочь отдельным лицам и компаниям полностью раскрыть свой потенциал.