Функція Excel VBA InStr - пояснюється прикладами

Вчора я отримав електронний лист від одного зі своїх читачів - Червень.

Вона хотіла знати, як застосувати жирний формат шрифту до певної частини рядка всередині комірки. Наприклад, застосуйте жирний шрифт лише до слова "Hello" із "Hello World".

І вона хотіла зробити це для сотень клітин одночасно.

Оскільки в Excel немає вбудованих функцій, які могли б це зробити, я створив простий макрос, який використовує Функція Excel VBA InStr (Ви побачите, як це зробити у Прикладі 4 цього підручника).

Але спочатку давайте подивимося, як працює функція Excel VBA InStr!

Функція Excel VBA InStr

У цьому підручнику я розповім про використання функції InStr у Excel VBA та побачу кілька практичних прикладів, де її можна використовувати.

Функція InStr Excel VBA - Вступ

Функція InStr знаходить позицію вказаного підрядка всередині рядка і повертає першу позицію його появи.

Наприклад, якщо ви хочете знайти позицію "x" у "Excel", використання функції InStr Excel VBA поверне 2.

Синтаксис функції InStr

InStr ([Пуск], Рядок1, Рядок2, [Порівняти])
  • [Почати] - (необов’язковий аргумент) - це ціле значення, яке вказує функції InStr вихідну позицію, з якої вона повинна почати шукати. Наприклад, якщо я хочу, щоб пошук починався з самого початку, я впишу значення як 1. Якщо я хочу, щоб воно починалося з третього символу і далі, я буду використовувати 3. Якщо його пропустити, то береться значення за замовчуванням 1.
  • Рядок1 - Це основний рядок (або батьківський рядок), у якому ви хочете шукати. Наприклад, якщо ви шукаєте позицію x у Excel, рядок 1 буде "Excel".
  • Рядок 2 - Це підрядок, який ви шукаєте. Наприклад, якщо ви шукаєте позицію x у Excel, String2 буде x.
  • [Порівняти] - (необов’язковий аргумент) Ви можете вказати одне з наступних трьох значень для аргументу [порівняння]:
    • vbBinaryCompare - Це зробить порівняння персонажів. Наприклад, якщо ви шукаєте "x" у "Excel", він поверне 2, але якщо ви шукаєте "X" у "Excel", він поверне 0, оскільки X у верхньому регістрі. Ви також можете використовувати 0 замість vbBinaryCompare. Якщо аргумент [Порівняти] опущено, він приймається за замовчуванням.
    • vbTextCompare - Це зробить текстове порівняння. Наприклад, якщо ви шукаєте "x" або "X" в Excel, це поверне 2 в обох випадках. Цей аргумент ігнорує регістр літер. Ви також можете використовувати 1 замість vbTextCompare.
    • vbDatabaseCompare - Це використовується лише для Microsoft Access. Він використовує інформацію в базі даних для виконання порівняння. Ви також можете використовувати 2 замість vbDatabaseCompare.

Додаткові примітки щодо функції InStr Excel VBA:

  • InStr - це функція VBA, а не функція аркуша. Це означає, що ви не можете використовувати його на робочому аркуші.
  • Якщо String2 (це підрядок, позицію якого ви шукаєте) порожній, функція повертає значення аргументу [Start].
  • Якщо функція InStr не може знайти підрядок у головному рядку, вона поверне 0.

Тепер давайте подивимося на деякий приклад використання функції InStr Excel VBA

Приклад 1 - Пошук позиції з самого початку

У цьому прикладі я буду використовувати функцію InStr для пошуку позиції «V» у «Excel VBA» з самого початку.

Код для цього буде таким:

Sub FindFromBeginning () Dim Position As Integer Position = InStr (1, "Excel VBA", "V", vbBinaryCompare) MsgBox Position End Sub

Коли ви запускаєте цей код, він відображатиме вікно повідомлення зі значенням 7, яке є позицією «V» у рядку «Excel VBA».

Приклад 2 - Пошук позиції від початку другого слова

Припустимо, я хочу знайти позицію "the" у реченні - "Швидка бура лисиця перестрибує через ледачого собаку"

Однак я хочу, щоб пошук починався з другого слова.

У цьому випадку нам потрібно змінити аргумент [Пуск], щоб переконатися, що він визначає позицію, з якої починається друге слово.

Ось код, який буде це робити:

Sub FindFromSecondWord () Позиція затемнення як цілочисельна позиція = InStr (4, "Швидка бура лисиця перестрибує через ледачого собаку", "the", vbBinaryCompare) MsgBox Position End Sub

Цей код покаже вікно повідомлення зі значенням 32, оскільки ми вказали початкову позицію як 4. Отже, він ігнорує перше "The" і знаходить друге "the" у реченні.

Якщо ви хочете зробити його більш динамічним, ви можете покращити код, щоб він автоматично ігнорував перше слово.

Ось розширений код, який буде це робити:

Sub FindFromSecondWord () Dim StartingPosition As Integer Dim Position As Integer StartingPosition = InStr (1, "Швидка бура лисиця перестрибує через ледачого собаку", "", vbBinaryCompare) Position = InStr (StartingPosition, "Швидка бура лисиця перестрибує через ледачого dog "," the ", vbBinaryCompare) MsgBox Position End Sub

Цей код спочатку знаходить позицію символу пробілу та зберігає його у змінній StartingPosition.

Потім він використовує цю змінну як вихідну позицію для пошуку слова «the».

Отже, він повертає 32 (це початкова позиція «the» після першого слова).

Приклад 3 - Пошук позиції @ в адресі електронної пошти

Ви можете легко створити користувацьку функцію для пошуку позиції @ в адресі електронної пошти за допомогою функції Excel VBA InStr.

Ось код для створення користувацької функції:

Функція FindPosition (Ref As Range) As Integer Dim Position As Integer Position = InStr (1, Ref, "@") FindPosition = Функція End End

Тепер ви можете використовувати цю користувацьку функцію як будь -яку іншу функцію аркуша. Він візьме посилання на клітинку як вхідний сигнал і дасть вам позицію @ у ньому.

Аналогічно, ви можете створити власну функцію, щоб знайти позицію будь -якої підрядки в основному рядку.

Приклад 4 - Виділення частини рядка всередині комірок

Це запит, який поставив Джун (мій читач, який також надихнув мене написати цей підручник).

Ось зразки даних у форматі, який надіслав мені червень:

Її запит полягав у тому, щоб зробити цифри за дужкою жирним.

Ось код, який я створив, що робить це:

Sub Bold () Dim rCell As Range Dim Char As Integer Для кожної rCell у виді CharCount = Len (rCell) Char = InStr (1, rCell, "(") rCell.Characters (1, Char - 1). Font.Bold = True Next rCell End Sub

У наведеному вище коді використовується цикл «Для кожного» для проходження кожної з клітинок у виділенні. Він визначає позицію символу відкриваючої дужки за допомогою функції InStr. Потім він змінює шрифт тексту перед дужкою.

Щоб використовувати цей код, потрібно скопіювати та вставити модуль у редакторі VB.

Після того, як ви скопіювали вставлений код, виберіть клітинки, у яких потрібно виконати це форматування, і запустіть макрос (як показано нижче).

Вам також можуть сподобатися такі підручники Excel VBA:

  • Функція Excel VBA SPLIT.
  • Функція VBA TRIM.
  • Найкращий посібник із циклів VBA Excel.
  • Посібник для початківців із використання For Next Loop у Excel VBA.
  • Як створити та використовувати надбудову Excel.
  • Як об’єднати кілька робочих книг в одну книгу Excel.
  • Як порахувати кольорові клітинки в Excel.
  • Корисні приклади макросів Excel VBA для початківців.
  • Як сортувати дані в Excel за допомогою VBA (Покроковий посібник)

Ви допоможете розвитку сайту, поділившись сторінкою з друзями

wave wave wave wave wave