Оглавление
Если вы ищете несколько самых простых способов поиска подстроки с помощью VBA, то вы попали по адресу. После прочтения этой статьи вы сможете легко найти позицию подстроки, извлечь данные с помощью этой подстроки или изменить формат подстроки. Давайте перейдем к статье.
Скачать рабочую тетрадь
Образец содержания9 способов найти подстроку с помощью VBA
Здесь у меня есть следующая таблица данных, в которой я покажу способы поиска подстроки в строке с помощью VBA. Я также попытаюсь показать способы поиска подстроки в случайной строке.
Я выполнил эту задачу, используя Microsoft Excel 365 версию, вы можете использовать любую другую версию в зависимости от вашего удобства.
Метод-1: Поиск подстроки в строке с помощью VBA
Если вы хотите найти нужную подстроку в строке с помощью VBA, вы можете использовать функция InStr в коде VBA.
Шаг-01 :
➤ Перейти к Разработчик Tab>> Visual Basic Вариант
Затем Редактор Visual Basic откроется.
➤ Перейти к Вставка Tab>> Модуль Вариант
После этого Модуль будет создан.
Шаг-02 :
➤ Напишите следующий код
Sub FindFirst() Dim Pos As Integer Pos = InStr(1, "I think therefore I am", "think") MsgBox Pos End Sub
Вот, InStr(1, "I think therefore I am", "think") вернет позицию подстроки строки. 1 это начальная позиция, " Я думаю, поэтому я есть". это строка, в которой вы найдете нужную подстроку, а "думать" это подстрока, которую вы хотите найти. По умолчанию она чувствительна к регистру, поэтому следите за регистром вашей подстроки, которую вы хотите найти.
➤ Нажмите F5
Результат :
После этого вы получите следующее Ящик для сообщений содержащий позицию "думать" подстрока.
Метод-2: Поиск подстроки в строке с учетом регистра
Если вы хотите найти нужную подстроку в строке независимо от регистра с помощью VBA, то следуйте этому методу.
Шаг-01 :
➤ Follow Шаг-01 из Метод-1
Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think",vbTextCompare) MsgBox Pos End Sub
Вот, vbTextCompare используется для поиска подстроки без учета регистра.
➤ Нажмите F5
Результат :
Затем вы получите следующее Ящик для сообщений содержащий позицию "думать" подстрока.
Вы можете сделать то же самое, используя следующий код.
Option Compare Text Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think") MsgBox Pos End Sub
Вот, Текст для сравнения опций найдет подстроку без учета регистра.
➤ Нажмите F5
Результат :
После этого вы получите следующее Ящик для сообщений содержащий позицию "думать" подстрока.
Метод-3: Использование функции InstrRev в VBA
Здесь я покажу, как найти подстроку из конца строки.
Шаг-01 :
➤ Follow Шаг-01 из Метод-1
Sub FindFromEnd() MsgBox InStrRev("I think therefore I am", "I") End Sub
InStrRev будет находить подстроку с правой стороны, а не с левой.
➤ Нажмите F5
Результат :
Затем вы получите следующее Ящик для сообщений содержащий позицию второго "I" подстроку с правой стороны.
Метод-4: Поиск позиции подстроки в строке в диапазоне данных
Если вы хотите найти специальный символ "@" в Email Id , тогда следуйте этому методу. Я добавил сюда Позиционная колонка для этой цели.
Шаг-01 :
➤ Follow Шаг-01 из Метод-1
Function FindSubstring(value As Range) As Integer Dim Pos As Integer Pos = InStr(1, value, "@") FindSubstring = Pos End Function
Она создаст функцию с именем FindSubstring (вы можете использовать любое другое имя)
значение это ссылка на ячейку, которая содержит строку, и она объявляется как Диапазон .
Шаг-02 :
➤ Выберите выход Ячейка E5
➤Тип следующей функции (созданной VBA )
= Найти подстроку(D5)
D5 это ячейка, содержащая строку.
➤ Нажмите ENTER
➤ Перетащите вниз Наполнительная рукоятка Инструмент
Результат :
После этого вы получите позиции специального символа " @" в Email Id .
Похожие чтения:
- Как найти строку в ячейке с помощью VBA в Excel (2 метода)
- FindNext Использование VBA в Excel (2 примера)
- Как найти строку с помощью VBA в Excel (8 примеров)
- VBA Найти последнюю строку в Excel (5 способов)
Метод-5: Проверка определенной подстроки в строке в диапазоне данных
Предположим, вы хотите написать Пройти или Не вести переписку к именам студентов в зависимости от Колонка результатов где Пройти или Провал была заключена в скобку. Чтобы найти эту подстроку в Колонка результатов и запишите это в Колонка "Прошел или не прошел следуйте этому методу.
Шаг-01 :
➤ Follow Шаг-01 из Метод-1
Sub CheckSubstring() Dim cell As Range For Each cell In Range("C5:C10") If InStr(cell.value, "Pass")> 0 Then cell.Offset(0, 1).value = "Passed" Else cell.Offset(0, 1).value = "Failed" End If Next cell End Sub
Здесь диапазон ячеек C5:C10 который является Колонка результатов
InStr(cell.value, "Pass")> 0 это условие, при котором число больше нуля (когда ячейка содержит "Пас" ), то следующая строка будет продолжена и выдаст результат в соседней ячейке в виде Передано .
Если условие становится ложным, это означает, что ячейка не содержит никаких "Пас" тогда строка под Else выполнится и даст выходное значение в соседней ячейке как Не удалось .
Этот цикл будет продолжаться для каждой ячейки.
➤ Нажмите F5
Результат :
После этого вы получите следующие выходные данные в окне Пройти или не пройти колонна.
Метод-6: Проверка определенной подстроки в строке и извлечение данных
Я покажу, как найти названных учеников. Майкл в Колонка "Имя студента и извлечь соответствующие данные с помощью VBA в этом методе.
Шаг-01 :
➤ Follow Шаг-01 из Метод-1
Sub Extractdata() Dim lastusedrow As Long Dim i As Integer, icount As Integer lastusedrow = ActiveSheet.Range("B100").End(xlUp).Row For i = 1 To lastusedrow If InStr(1, Range("B" & i), "Michael")> 0 Then icount = icount + 1 Range("E" & icount & ":G" & icount) = Range("B" & i & ":D" & i).value End If Next i End Sub
Здесь я использовал B100 как Активный диапазон листов но вы можете использовать любой диапазон в соответствии с вашими потребностями.
InStr(1, Range("B" & i), "Michael")> 0
это условие для проверки, если ячейка в столбце B содержит Майкл
Range("E" & icount & ":G" & icount)
это диапазон, в котором вы хотите получить выходные данные и Range("B" & i & ":D" & i).value
даст значения из столбцов B на D .
➤ Нажмите F5
Результат :
После этого вы получите следующие извлеченные данные для студентов с именем Майкл .
Метод-7: Поиск подстроки для слова
Если вы хотите найти подстроку как слово, то следуйте этому методу.
Шаг-01 :
➤ Follow Шаг-01 из Метод-1
Sub Stringforword() Dim j As Integer j = InStr("Вот что я есть", "есть") If j = 0 Then MsgBox "Слово не найдено" Else MsgBox "Слово найдено в позиции: " & j End If End Sub
Он проверит, содержит ли строка это и тогда его положение будет задано
➤ Нажмите F5
Результат :
После этого вы получите следующее окно с сообщением, в котором показано слово, найденное в положении:6 (положение это ).
Вы можете проверить этот код для слова, которого нет в строке.
➤ Введите следующий код
Sub Stringforword() Dim j As Integer j = InStr("Вот что я есть", "есть") If j = 0 Then MsgBox "Слово не найдено" Else MsgBox "Слово найдено в позиции: " & j End If End Sub
➤ Нажмите F5
Результат :
После этого вы получите следующее окно с сообщением, в котором показано слово не найдено .
Метод-8: Использование функций Instr и LEFT
Здесь я объясню, как найти позицию подстроки в строке и извлечь тексты перед этой подстрокой с помощью функции VBA и функция ЛЕВША .
Шаг-01 :
➤ Follow Шаг-01 из Метод-1
Sub InstrandLeft() Dim txt As String Dim j As Long txt = "Вот что я такое" j = InStr(txt, "is") MsgBox Left(txt, j - 1) End Sub
j = InStr(txt, "is")
позиция подстроки это и Left(txt, j - 1)
будет извлекать подстроки перед это .
➤ Нажмите F5
Результат :
После этого вы получите следующее окно сообщения, в котором будет показано Здесь (подстрока перед это ).
Метод-9: Выделение жирной чертой определенной подстроки в строке
Вы можете выделить жирным шрифтом оценки перед скобками в Колонка результатов следуя этому методу.
Шаг-01 :
➤ Follow Шаг-01 из Метод-1
Sub Boldingsubstring() Dim Cell As Range Dim txt As Integer For Each Cell In Selection txtCount = Len(Cell) txt = InStr(1, Cell, "(") Cell.Characters(1, txt - 1).Font.Bold = True Next Cell End Sub
txt = InStr(1, Cell, "("))
вернет позицию первой скобки и Cell.Characters(1, txt - 1).Font.Bold
сделает подстроку, расположенную перед первой скобкой Смелый .
Шаг-02 :
➤ Выберите Колонка результатов
➤ Перейти к Разработчик Tab>> Макросы Вариант
Затем, а Макро появится мастер.
➤ Выберите Полужирный подстрочник (кодовое имя VBA), а затем Запускайте .
Результат :
После этого оценки в Результат Колонка будут выделены жирным шрифтом.
Практическая секция
Для самостоятельного выполнения практики мы предоставили Практика раздел, как показано ниже, в листе с именем Практика Пожалуйста, сделайте это сами.
Заключение
В этой статье я попытался рассказать о самых простых способах поиска подстроки с использованием VBA Если у вас есть какие-либо предложения или вопросы, не стесняйтесь поделиться ими с нами.