Оглавление
Работая с кодами Excel VBA, мы сталкиваемся с несколькими встроенными функциями, которые превращают сложную задачу в небольшой однострочный код. InStr это такая функция, доступная в Excel VBA, которая ищет определенную строку внутри другой строки, начиная с заданной позиции. Сегодня я покажу, как вы можете использовать функцию InStr функция в VBA для поиска определенной строки внутри другой заданной строки.
Скачать Рабочую тетрадь для практических занятий
InStr Function.xlsm
Введение в Функция VBA InStr
- Резюме
Поиск определенной строки в заданной строке, начиная с заданной позиции. Если найдено совпадение, возвращает позицию в заданной строке, с которой началось совпадение.
- Синтаксис
InStr([start],string1,string2,[compare])
- Аргументы
АРГУМЕНТ | РЕКВИЗИТ | ОПИСАНИЕ |
---|---|---|
[начало] | Дополнительно | Позиция, с которой начнется поиск. По умолчанию - 1. |
строка1 | Требуется | Строка, в пределах которой производится поиск заданной строки. |
строка2 | Требуется | Строка, которую он ищет в заданной строке. |
[сравнить]. | Дополнительно | Числовое значение между {-1,0,1,2}, определяющее тип сравнения. По умолчанию -1 (vbUseCompareOption). Если оператор Option Compare не указан, выполняется бинарное сравнение. |
Примечание:
- Хотя [начало] аргумент и [сравнить]. являются необязательными, вам необходимо [начало] аргумент, если вы укажете [сравнить]. в противном случае будет выдана ошибка.
- Если один или оба из [начало] аргумент и [сравнить]. аргумент Null , вы столкнетесь с ошибкой.
- Четыре указанных значения в [сравнить]. аргумент выполняет четыре различных типа сравнения. они упомянуты ниже:
VALUE | КОНСТАНТА | ОПИСАНИЕ Смотрите также: Как удалить линии сетки в графике Excel (5 простых способов) |
---|---|---|
-1 | vbUseCompareOption | Выполняет сравнение, указанное в операторе Option Compare. |
0 | vbBinaryCompare | Выполняет бинарное сравнение. |
1 | vbTextCompare | Выполняет сравнение текста. |
2 | vbDatabaseCompare | Выполняет сравнение на основе вашей базы данных. |
- Вариант сравнения оператор - это оператор, предоставляемый перед началом основного кода VBA. Он определяет, будет ли код искать бинарное сравнение или текстовое сравнение, когда это необходимо.
Текст для сравнения опций
- Простыми словами , бинарное сравнение означает сравнение с учетом регистра.
- Простыми словами , Сравнение текстов означает сравнение без учета регистра.
- Возвращаемое значение
- Возвращает позицию в строка1 из которого строка2 началось.
- В случае строка2 не находится в пределах строка1 начиная с запустить положение, возвращается 0.
- Если строка1 имеет нулевую длину, возвращает 0.
- Если строка2 имеет нулевую длину, возвращает аргумент запустить .
- И, наконец, если какой-либо из строка1 или строка2 это Null , возвращает ошибку.
3 простых примера использования функции InStr в VBA
В этом разделе мы рассмотрим три простых примера применения VBA InStr функцию в Excel. Давайте посмотрим первый пример функции InStr функция в кодах VBA.
1. определение того, является ли адрес адресом электронной почты или нет с помощью функции VBA InStr
Здесь мы взяли набор данных, содержащий некоторые контактные адреса клиентов. Нашей целью будет определить, являются ли эти адреса адресами электронной почты или нет.
Теперь мы разработаем код VBA, используя InStr чтобы определить, является ли это адресом электронной почты или нет. Для этого выполните следующие действия.
Шаги:
- Вначале перейдите к Разработчик вкладку и выберите Visual Basic ( Или нажмите Alt+F11) чтобы открыть VBA окно.
- Затем, на VBA окно, перейдите к Вставка> Модуль .
- После этого в модуле вставьте следующий код:
Function DECISION(string1 As String) Dim Position As Integer Position = InStr(1, string1, "@", 0) If Position = 0 Then DECISION = "Not Email" Else DECISION = "Email" End If End Function
- Более того, мы создали функцию под названием РЕШЕНИЕ Она решает, является ли адрес адресом электронной почты или нет. Давайте применим функцию к имеющемуся у нас набору данных.
- На клетке C5 запишите следующую формулу, а затем автоматически заполните остальные ячейки, используя Наполнительная рукоятка .
= РЕШЕНИЕ(B5)
- Как мы видим, мы определили каждый адрес, независимо от того, является ли он адресом электронной почты или нет.
🎓 Как работает код?
- Function DECISION(string1 As String)
Во-первых, создается функция под названием РЕШЕНИЕ со строковым аргументом с именем строка1 .
- Dim Position As Integer
В нем объявляется целочисленная переменная с именем Позиция .
- Position = InStr(1, string1, "@", 0)
При этом присваивается значение Позиция переменная как выход InStr функция с аргументами 1, string1, "@" и 0 Короче говоря, это назначает позицию в адресе, где есть "@" .
- Если Position = 0 Тогда РЕШЕНИЕ = "Не Email"
Он назначает выход РЕШЕНИЕ функционировать как "Не электронная почта" , если Позиция переменная 0 Это означает, что не было "@" в адресе.
(Напомним, что если какая-либо строка не найдена в пределах заданной строки, то в качестве параметра InStr возврат функции 0 ).
- Иначе РЕШЕНИЕ = "Email"
Это назначает выход РЕШЕНИЕ функционировать как "Электронная почта" если был "@" в адресе. Таким образом, адреса, где есть "@" классифицируются как Электронная почта , а остальные относятся к категории "Не электронная почта" .
Похожие чтения
- Как использовать функцию VBA UCASE в Excel (4 примера)
- Использование функции MsgBox в Excel VBA (полное руководство)
- Как использовать функцию VBA SPLIT в Excel (5 примеров)
- Использование функции LCase в VBA в Excel (С 4 примерами)
- Как использовать функцию Fix в Excel VBA (4 примера)
2. Использование функции VBA InStr для Извлечение расширения некоторых адресов электронной почты
Здесь у нас есть список адресов электронной почты некоторых клиентов. На этот раз мы извлечем расширение адреса электронной почты, например, есть ли у них gmail.com или yahoo.com .
Для этого выполните следующие действия.
Шаги:
- Для начала, как и в предыдущем методе, откройте новый VBA модуль и вставьте в окно следующий код.
Function EXTENSION(Email As String) Dim Position As Integer Position = InStr(1, Email, "@", 0) EXTENSION = Right(Email, (Len(Email) - Position)) End Function
- Кроме того, мы создали функцию под названием РАСШИРЕНИЕ Он извлекает расширение любого адреса электронной почты.
- Далее, давайте применим эту функцию к имеющемуся у нас набору данных. Сначала введите эту формулу в ячейку C5 а затем дважды щелкните на Наполнительная рукоятка .
=EXTENSION(B5)
- Наконец, мы видим, что успешно извлекли расширения всех писем.
🎓 Как работает код?
- Function EXTENSION(Email As String)
Это создает новую функцию под названием РАСШИРЕНИЕ со строковым аргументом с именем Электронная почта .
- Dim Position As Integer
В этой части объявляется целочисленная переменная с именем Положение.
- Position = InStr(1, Email, "@", 0)
При этом присваивается значение Позиция переменная как выход InStr функция с аргументами 1, Email, "@" и 0 Короче говоря, это назначает позицию в Электронная почта где есть "@" .
- EXTENSION = Right(Email, (Len(Email) - Position))
Эта часть назначает выход РАСШИРЕНИЕ как символы после символа "@" . Это необходимое расширение Электронная почта .
3. Извлечение имени или фамилии из имени с помощью функции VBA InStr
Наконец, мы выполним совершенно другую задачу. На этот раз у нас есть имена некоторых сотрудников компании. И мы попытаемся построить функцию для извлечения либо имени, либо фамилии сотрудников.
Для этого выполните следующие действия.
Шаги:
- Во-первых, по аналогии с метод 1 , вставьте приведенный ниже код в новый модуль в окне VBA.
Function SHORTNAME(Name As String, First_or_Last As Integer) Dim Break As Integer Break = InStr(1, Name, " ", 0) If First_or_Last = -1 Then SHORTNAME = Left(Name, Break - 1) Else SHORTNAME = Right(Name, Len(Name) - Break) End If End Function
- Здесь мы создали функцию под названием SHORTNAME которая извлекает из имени либо имя, либо фамилию. Давайте применим эту формулу к нашему набору данных.
- Сначала, чтобы извлечь первое имя, запишите приведенную ниже формулу в ячейке C5 .
=КОРОТКОЕ ИМЯ(B5,-1)
- Наконец, чтобы извлечь фамилии, запишем следующую формулу в формате D5 :
= КОРОТКОЕ ИМЯ(B5,1)
- После этого, если мы автоматически заполним остальные ячейки с Обработчик заполнения мы получим желаемый результат.
🎓 Как работает код?
- Function SHORTNAME(Name As String, First_or_Last As Integer)
Он создает новую функцию под названием SHORTNAME с одним строковым аргументом с именем Имя и один целочисленный аргумент с именем Первый_или_последний .
- Dim Break As Integer
В этой части объявляется новая целочисленная переменная с именем Перерыв .
- Break = InStr(1, Name, " ", 0)
Он присваивает значение Перерыв переменная как выход InStr функция с аргументами 1, Имя, " " и 0 Короче говоря, это назначает позицию в Имя где есть пробел (" ").
- Если First_or_Last = -1 Тогда SHORTNAME = Left(Name, Break - 1)
Эта строка назначает вывод SHORTNAME функцию как символы перед пространство , если Первый_или_последний аргумент равен -1. Это первое имя.
- SHORTNAME = Right(Name, Len(Name) - Break)
Эта часть назначает выход SHORTNAME функцию, как символы после пространство , если Первый_или_последний аргумент - 1. Это фамилия.
Заключение
Таким образом, вы можете писать коды VBA с помощью программы InStr функцию, которая определяет положение определенной строки внутри другой строки, а затем вы можете создавать свои собственные функции для различных целей. Кроме того, если у вас есть какие-либо вопросы, не стесняйтесь задавать их нам.