Оглавление
Внедрение VBA это самый эффективный, быстрый и безопасный метод выполнения любых операций в Excel. В этой статье мы покажем вам, как найти определенные строки в другой заданной строке, используя VBA в Excel.
Скачать шаблон практики
Бесплатный практический шаблон Excel можно скачать отсюда.
VBA для поиска в String.xlsm
Функция InStr
В Microsoft Excel есть встроенная функция под названием функция InStr для поиска положения определенных строк в заданном String.
Общий синтаксис:
InStr([start], string1, string2, [compare])
Вот,
Аргументы | Обязательный/ Факультативный | Определение |
---|---|---|
запустить | Дополнительно | Начальная позиция поиска.
|
строка1 | Требуется | Строка для поиска, Primary String. |
строка2 | Требуется | Строка для поиска в первичной строке. |
сравнить | Дополнительно | Сайт InStr по умолчанию чувствительна к регистру. Но если вы хотите запустить функцию без учета регистра InStr , то вы можете передать сюда аргумент для выполнения определенного сравнения. Этот аргумент может иметь следующие значения,
По умолчанию, InStr принимает vbBinaryCompare в качестве аргумента сравнения. |
8 простых примеров поиска конкретной позиции строки в заданной строке с помощью VBA
Рассмотрим несколько простых примеров, чтобы получить позиции определенных строк в заданной строке, используя VBA .
1. VBA для поиска позиции текста в строке
Ниже приведен пример InStr для поиска позиции текста в строке.
- Нажмите Alt + F11 на клавиатуре или перейдите на вкладку Разработчик -> Visual Basic открыть Редактор Visual Basic .
- Во всплывающем окне кода в строке меню нажмите Вставка -> Модуль .
- Теперь в окне кода напишите простой InStr программа внутри Подпроцедура VBA (см. ниже).
Sub INSTR_Example() MsgBox InStr("Счастье - это выбор", "выбор") End Sub
Теперь ваш код готов к выполнению.
- Нажмите F5 на клавиатуре или в строке меню выберите Run -> Run Sub/UserForm Вы также можете просто нажать на маленький значок Play в строке подменю, чтобы запустить макрос.
Вы увидите, что во всплывающем окне сообщения вам будет предложено число, определяющее положение текста, который вы хотите проверить.
Объяснение:
Наша основная строка, " Счастье - это выбор " - это предложение из 21 буквы (с пробелами), и мы хотели найти позицию текста " выбор " в этой строке. Текст " выбор " начинался с 16-й позиции основной струны, следовательно, мы получили число 16 как наш вывод в окне сообщения.
2. VBA для поиска текста с определенной позиции в строке
Теперь давайте выясним, что произойдет, если мы захотим получить позицию от определенного числа.
- Так же, как и раньше, откройте Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
- В окне кода напишите простой InStr программу, показанную выше, и передайте значение в аргументе start в соответствии с позицией, от которой вы хотите отсчитывать текст.
Sub INSTR_Example() MsgBox InStr(17, "Счастье - это выбор", "выбор") End Sub
- Следующий, Запускайте код.
Вы увидите, что во всплывающем окне сообщения вам будет предложено число, определяющее положение текст начиная с определенной позиции которые вы хотели проверить.
Объяснение:
Поскольку мы уже знали (из обсуждения на фазе 1), что текст " выбор " началась с позиции 16 , поэтому мы вставили два " выбор " в основной строке и установите 17 в качестве нашего 1-го параметра, чтобы пропустить первый " выбор ". Итак, мы Запускайте вышеуказанный макрос, и он показал нам номер позиции 27 что в точности соответствует номеру позиции второй " выбор " в заданной строке.
3. VBA для поиска текста в строке с помощью чувствительной к регистру функции InStr
С момента введения InStr вы уже знаете, что по умолчанию InStr Функция чувствительна к регистру. Давайте выясним это на примере.
См. VBA код, где мы хотели найти позицию слова " Выбор " с заглавная "С" в строке " Счастье - это выбор ", где выбор пишется с маленькая буква "с" .
- Запускайте код и найти 0 как наш выход.
Это потому, что InStr лечение функциями заглавная "С" и маленькая буква "с" по-другому. Поэтому он искал слово " Выбор " в строке и не получил ни одного совпадения, поэтому вернул 0 .
- Чтобы сделать InStr функция без учета регистра , установите аргумент сравнения в vbTextCompare (см. ниже).
Sub INSTR_Example() MsgBox InStr(1, "Счастье - это выбор и выбор", "Выбор", vbTextCompare) End Sub
- Запускайте код.
Вы получите положение текста из строки, записан ли текст в формате заглавные или строчные буквы .
4. VBA для поиска текста в правой части строки
До сих пор InStr Функция давала нам только позицию с левой стороны строки. Но что если вы хотите найти позицию текста с правой стороны строки.
Функция InStrRev ищет справа. InStrRev функция работает очень похоже на InStr функция найдет позицию текста из файла правая сторона строки.
Чтобы понять разницу, смотрите следующие примеры.
- Если мы выполним следующий код с InStr функция тогда,
это дает нам позицию ( 16 ) первого текста " выбор ".
- Но если мы запустим тот же код с InStrRev Функционируйте тогда,
это дает нам позицию ( 27 ) последнего текста " выбор ".
Похожие чтения:
- FindNext Использование VBA в Excel (2 примера)
- Как найти и заменить с помощью VBA (11 способов)
- Поиск точного совпадения с помощью VBA в Excel (5 способов)
5. VBA для поиска позиции символа в строке
Вы также можете найти позицию определенного символа в строке таким же образом, как и при поиске текста.
- Скопируйте следующий код в свой VBA кодовое окно
Sub Find_Character() Dim z As Long z = InStr("Счастье - это выбор", "e") MsgBox z End Sub
- И Запускайте макрос.
Первый " e " в нашей заданной строке находится под номером 7 должность.
6. VBA для поиска подстроки в строке
Здесь мы узнаем, как найти, содержит ли строка символ подстрока или нет.
Чтобы получить это, мы должны запустить Заявление КЧ в нашем коде.
- Так же, как и раньше, откройте Редактор Visual Basic из Разработчик вкладка и Вставка a Модуль в окне кода.
- В окне кода скопируйте следующий код и вставьте его.
Public Sub FindSub() If InStr("Счастье - это выбор", "выбор") = 0 Then MsgBox "Соответствие не найдено" Else MsgBox "Соответствие найдено" End If End Sub
Теперь ваш код готов к выполнению.
- Запускайте макрос.
Если ваш строка содержит подстроку тогда вы получите соответствие найдено В нашем примере мы хотели выяснить, соответствует ли наша первичная строка " Счастье - это выбор " содержит слово " выбор " или нет. В этом случае мы получаем Совпадение найдено результат.
7. VBA для поиска строки в диапазоне ячеек
Вы можете искать определенный текст в диапазоне ячеек и возвращать определенную строку.
Посмотрите на следующий пример, где мы найдем " Др. " и при совпадении возвращает " Доктор ".
- Ниже приведен код для получения результата, о котором говорилось выше,
Sub Find_String_in_Range() Dim cell As Range For Each cell In Range("B5:B10") If InStr(cell.Value, "Dr.")> 0 Then cell.Offset(0, 1).Value = "Doctor" End If Next cell End Sub
- Запускайте код и результат показан ниже
- Вы можете изменить макрос в соответствии с вашими потребностями. Например, если вы хотите найти " Проф. " в любой ячейке строки, и получите " Профессор " в качестве возврата, тогда просто передайте " Проф. " в качестве значения вместо " Доктор ." в 4-й строке макроса и " Профессор " вместо " Доктор " в 5-й строке макроса и соответствующим образом определите номер диапазона ячеек.
8. VBA для поиска строки в ячейке
Вы также можете поиск определенного текста в одной ячейке строки и вернуть определенную строку.
- Скопируйте следующий код и вставьте его в окно кода.
Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> 0 Then Range("C5").Value = "Doctor" End If End Sub
Он будет искать " Др. " в Клетка B5 и если он находит совпадение, то возвращает " Доктор " в Клетка C5 .
- Вы можете изменить макрос в соответствии с вашими потребностями. Например, если вы хотите найти " Проф. " в любой ячейке строки, и получите " Профессор " в качестве возврата, тогда просто передайте " Проф. " в качестве значения вместо " Доктор ." во 2-й строке макроса и " Профессор " вместо " Доктор " в 3-й строке макроса и соответствующим образом определите номер ссылки ячейки.
Заключение
В этой статье было показано, как найти определенные тексты в строке в Excel, используя Макрос VBA. Я надеюсь, что эта статья была очень полезна для вас. Не стесняйтесь задавать любые вопросы по теме.