Як використовувати функцію InStr у VBA (3 простих приклади)

  • Поділитися Цим
Hugh West

Працюючи з кодами Excel VBA, ми стикаємося з декількома вбудованими функціями, які перетворюють складну задачу в невеликий однорядковий код. InStr це така функція, доступна в Excel VBA, яка шукає певний рядок в іншому заданому рядку, починаючи з заданої позиції. Сьогодні я покажу, як можна використовувати функцію InStr функція в VBA для пошуку певного рядка в іншому заданому рядку.

Завантажити Практичний посібник

InStr Function.xlsm

Вступ до Функція VBA InStr

  • Резюме

Шукає певний рядок в заданому рядку, починаючи з заданої позиції. Якщо знаходить збіг, повертає позицію в заданому рядку, з якої почався збіг.

  • Синтаксис

InStr([start],string1,string2,[compare])

  • Аргументи
АРГУМЕНТ ВИМОГА ОПИС

[старт] За бажанням Позиція, з якої почнеться пошук. За замовчуванням - 1.
string1 Необхідно Рядок, в межах якого здійснюється пошук заданого рядка.
string2 Необхідно Рядок, який він шукає в заданому рядку.
[порівняти]. За бажанням Числове значення в діапазоні {-1,0,1,2}, що задає тип порівняння. За замовчуванням -1 (vbUseCompareOption). Якщо оператор Option Compare не вказано, виконати бінарне порівняння.

Зауважте:

  • Незважаючи на те, що [старт] аргументація та [порівняти]. не є обов'язковими, потрібно, щоб аргумент [старт] якщо вказати аргумент [порівняти]. В іншому випадку буде видана помилка.
  • Якщо одна або обидві з цих умов [старт] аргументація та [порівняти]. аргумент полягає в тому, що Нуль ви зіткнетеся з помилкою.
  • Чотири зазначені значення в [порівняти]. Для порівняння аргументів використовують чотири різні типи порівнянь, які наведені нижче:
ЦІННІСТЬ ПОСТІЙНА ОПИС

-1 vbUseCompareOption Виконує порівняння, вказане в операторі Option Compare.
0 vbBinaryCompare Виконує бінарне порівняння.
1 vbTextCompare Виконує порівняння текстів.
2 vbDatabaseCompare Виконує порівняння на основі вашої бази даних.
  • Порівняння варіантів оператор, що задається перед початком основного коду VBA. Він вказує, чи буде код шукати бінарне порівняння або текстове порівняння, коли це потрібно.

Опція Порівняти текст

    • Простими словами , Бінарне порівняння означає порівняння з урахуванням регістру.
    • Простими словами , Порівняння текстів означає порівняння без урахування регістру.
  • Значення, що повертається
    • Повертає позицію в string1 з якого було створено string2 почалося.
    • У разі, якщо string2 не міститься в межах string1 починаючи з початок повертає 0.
    • У разі, якщо string1 має нульову довжину, повертає 0.
    • У разі, якщо string2 має нульову довжину, повертає аргумент початок .
    • І, нарешті, якщо хтось із string1 або string2 це Нуль повертає помилку.

3 Прості приклади використання функції VBA InStr

У цьому розділі ми розглянемо три простих приклади застосування VBA InStr Розглянемо перший приклад використання функції 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)

По-перше, створюється функція під назвою РІШЕННЯ з рядковим аргументом з іменем string1 .

  • Dim Position As Integer

У ньому оголошується цілочисельна змінна з іменем Посада .

  • Position = InStr(1, string1, "@", 0)

При цьому присвоюється значення Посада як вихідна змінна для InStr функція з аргументами 1, string1, "@" і 0 Коротше кажучи, це присвоює позицію в адресі, де є "@" .

  • If Position = 0 Then DECISION = "Not Email"

Він призначає вихідні дані РІШЕННЯ функціонувати як "Не електронна пошта" , якщо в Посада змінною є 0 це означає, що не було ніякого "@" за адресою.

(Нагадаємо, що якщо в заданому рядку не знайдено жодного рядка, то InStr функція повертає 0 ).

  • Else DECISION = "Email"

Таким чином, вихідні дані РІШЕННЯ функціонувати як "Електронна пошта" якби був "@" Таким чином, адреси, де є "@" відносяться до таких категорій Електронна пошта , а решта віднесена до категорії "Не електронна пошта" .

Схожі читання

  • Як використовувати функцію VBA UCASE в Excel (4 приклади)
  • Використання функції MsgBox в Excel VBA (повне керівництво)
  • Як використовувати функцію VBA SPLIT в Excel (5 прикладів)
  • Використання функції LCase у VBA в Excel (з 4 прикладами)
  • Як використовувати функцію "Виправити" в 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)

  • Нарешті, ми бачимо, що ми успішно витягли розширення всіх електронних листів.

🎓 Як працює Кодекс?

  • Функція РОЗШИРЕННЯ(Email як рядок)

Це створює нову функцію під назвою РОЗШИРЕННЯ з рядковим аргументом з іменем Електронна пошта .

  • Dim Position As Integer

У цій частині оголошується цілочисельна змінна з іменем На позицію.

  • Position = InStr(1, Email, "@", 0)

При цьому присвоюється значення Посада як вихідна змінна для InStr функція з аргументами 1, Email, "@" і 0 Коротше кажучи, це закріплює позицію в Електронна пошта де є "@" .

  • EXTENSION = Right(Email, (Len(Email) - Посада))

Ця частина призначає вихідні дані для РОЗШИРЕННЯ виконують функцію символів після символу "@" Це необхідне продовження терміну дії Угоди про асоціацію між Україною та ЄС. Електронна пошта .

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 

  • Тут ми створили функцію з назвою СКОРОЧЕНА НАЗВА яка витягує з імені або ім'я, або прізвище. Застосуємо цю формулу до нашого набору даних.
  • Спочатку, щоб витягти прізвище, запишіть у комірку формулу, наведену нижче C5 .
=SHORTNAME(B5,-1)

  • Нарешті, щоб витягти прізвища, ми записуємо наступну формулу в D5 :
=SHORTNAME(B5,1)

  • Після цього, якщо ми автоматично заповнимо решту клітинок Обробник заповнення ми побачимо бажаний результат.

🎓 Як працює Кодекс?

  • Function SHORTNAME(Name As String, First_or_Last As Integer)

Створюється нова функція з назвою СКОРОЧЕНА НАЗВА з одним аргументом String з іменем Ім'я та один цілочисельний аргумент з іменем Перший_або_останній .

  • Dim Break As Integer

У цій частині оголошується нова цілочисельна змінна з іменем Перерва .

  • Break = InStr(1, Name, " ", 0)

Він присвоює значення Перерва як вихідна змінна для InStr функція з аргументами 1, Ім'я, " " і 0 Коротше кажучи, це закріплює позицію в Ім'я та прізвище де є пробіл (" ").

  • If First_or_Last = -1 Then SHORTNAME = Left(Name, Break - 1)

У цьому рядку присвоюється вихідні дані СКОРОЧЕНА НАЗВА виконують функцію символів перед простір , якщо в Перший_або_останній аргумент -1. Це прізвище.

  • SHORTNAME = Right(Name, Len(Name) - Break)

Ця частина призначає вихідні дані для СКОРОЧЕНА НАЗВА виконують функцію символів після простір , якщо в Перший_або_останній аргумент 1 - це прізвище.

Висновок

Таким чином можна писати VBA-коди з допомогою InStr функцію, яка з'ясовує позицію певного рядка в іншому заданому рядку, а потім ви можете створювати власні функції для різноманітних застосувань. Крім того, якщо у вас виникнуть питання, не соромтеся задавати їх нам.

Г’ю Вест — досвідчений тренер і аналітик Excel із понад 10-річним досвідом роботи в галузі. Він має ступінь бакалавра з бухгалтерського обліку та фінансів і ступінь магістра з ділового адміністрування. Г’ю має пристрасть до викладання та розробив унікальний підхід до викладання, який легко зрозуміти та дотримуватися. Його експертне знання Excel допомогло тисячам студентів і професіоналів у всьому світі вдосконалити свої навички та досягти успіху в кар’єрі. У своєму блозі Г’ю ділиться своїми знаннями зі світом, пропонуючи безкоштовні навчальні посібники з Excel та онлайн-навчання, щоб допомогти окремим особам і компаніям повністю розкрити свій потенціал.