Найти в Дзене

📌 Практикум VBA Excel: Использование функции InStr в коде VBA Excel

Оглавление

Одной из функций для работы с текстовыми значениями в VBA является функция InStr.

Функция будет полезна если требуется автоматически обрабатывать или анализировать текстовые данные, например, при поиске конкретных слов или символов в ячейках Excel или разделении строк на составные части.

Один из примеров демонстрирующий практическое применение функции InStr рассмотрен в обзоре.

Для удобства поиска нужного материала у нас на канале есть удобный рубрикатор, а все видео предыдущих уроков также доступны на youtube (ссылка внизу поста и в описании канала)
Для удобства поиска нужного материала у нас на канале есть удобный рубрикатор, а все видео предыдущих уроков также доступны на youtube (ссылка внизу поста и в описании канала)
Практикум VBA Excel: Использование функции InStr в коде VBA Excel
Практикум VBA Excel: Использование функции InStr в коде VBA Excel

📢 Файл с примером размещен в конце статьи 🔽

Рассмотренный пример демонстрирует практическое применение функции InStr. Макрос выполняет следующую задачу: он копирует значения из столбца A в столбец B после символа "/"
Рассмотренный пример демонстрирует практическое применение функции InStr. Макрос выполняет следующую задачу: он копирует значения из столбца A в столбец B после символа "/"

▶️ Обзор функции

Функция InStr применяется для поиска позиции первого вхождения и имеет следующий синтаксис:

- start (необязательный) - начальная позиция поиска в строке string1. Если не указано, поиск начинается с первого символа строки. Если start отрицательно, поиск начинается с конца строки, начиная с позиции, равной абсолютному значению start. string1 - строка, в которой производится поиск.
- string2 - строка, которую нужно найти в строке string1.
- compare (необязательный) - тип сравнения. Может принимать следующие значения:
vbBinaryCompare (0) - двоичное сравнение (регистр букв имеет значение).
vbTextCompare (1) - текстовое сравнение (регистр букв не имеет значения).
- start (необязательный) - начальная позиция поиска в строке string1. Если не указано, поиск начинается с первого символа строки. Если start отрицательно, поиск начинается с конца строки, начиная с позиции, равной абсолютному значению start. string1 - строка, в которой производится поиск. - string2 - строка, которую нужно найти в строке string1. - compare (необязательный) - тип сравнения. Может принимать следующие значения: vbBinaryCompare (0) - двоичное сравнение (регистр букв имеет значение). vbTextCompare (1) - текстовое сравнение (регистр букв не имеет значения).

Если InStr находит подстроку string2 в строке string1, она возвращает позицию первого вхождения. Если подстрока не найдена, возвращается 0.

Простой пример использования функции:

В этом примере кода функция InStr используется для поиска подстроки "а" в строке "ананас". Параметр start задает начальную позицию поиска (в данном случае, с начала строки), а функция возвращает позицию первого вхождения подстроки "а". Так как "а" находится в начале строки, функция возвращает значение 1.
В этом примере кода функция InStr используется для поиска подстроки "а" в строке "ананас". Параметр start задает начальную позицию поиска (в данном случае, с начала строки), а функция возвращает позицию первого вхождения подстроки "а". Так как "а" находится в начале строки, функция возвращает значение 1.

🔔 Идеи и советы

Чтобы продемонстрировать практическое использование функции InStr в рамках данного обзора рассмотрим пример кода, который выполнит поиск символа (нашем примере это "/") в столбце А и скопирует значения после этого символа в столбец B.

▶️ Практический пример

В качестве исходных данных рассмотрим следующие:

Пример исходных данных
Пример исходных данных

🎯 Задача: после символа "/" из каждой ячейки столбца A скопировать значения в соответствующие ячейки столбца B.

🔘 Пример кода

Пример использования функции InStr в коде VBA Excel
Код направлен на поиск определенного символа ("/") в тексте каждой ячейки в столбце A, и если этот символ найден, он копирует текст после этого символа в соответствующую ячейку в столбце B.
Пример использования функции InStr в коде VBA Excel Код направлен на поиск определенного символа ("/") в тексте каждой ячейки в столбце A, и если этот символ найден, он копирует текст после этого символа в соответствующую ячейку в столбце B.

🔘 Как это работает?

  • проходим по каждой заполненной строке в столбце A;
  • ищем позицию символа "/";
  • копируем все символы после найденной позиции в столбец B.

🔘 Ключевые положения

  • Переменная используется для получения номера последней строки, содержащей данные в столбце A (lastRow)
  • Цикл инициирует поиск и проверку каждой ячейки, начиная с первой строки и заканчивая lastRow
  • В цикле определяем фактическое значение в каждой ячейке столбца A. Если найден символ "/", то функция извлекает текст после позиции этого символа и присваивает его переменной.
  • Значение передается в соответствующую ячейку в столбце B () newValueCells(i, "B").Value = newValue. Это продолжается для каждой заполненной ячейки в столбце A.

🔘 Результат

Поиск определенного символа ("/") в тексте каждой ячейки в столбце A, и если этот символ найден, он копирует текст после этого символа в соответствующую ячейку в столбце B
Поиск определенного символа ("/") в тексте каждой ячейки в столбце A, и если этот символ найден, он копирует текст после этого символа в соответствующую ячейку в столбце B

📝 Примечание автора: Применение макроса будет полезно, если в столбце содержатся строки, в которых после символа "/" находится интересующая нас информация, которую требуется скопировать или обработать отдельно.

🔔 В случае, если требуется перезаписать значения и в столбце А, то следует несколько изменить макрос:

Пример использования функции InStr в коде VBA Excel. Макрос предназначен для итерации по каждой ячейке в столбце A и определения наличия символа "/" в тексте ячейки. Если символ "/" найден, он разделяет строку на две части: одну перед символом, а другую после. Часть, предшествующая символу "/", обновляется в текущую ячейку в столбце A, а часть после символа "/" вставляется в соответствующую ячейку в столбце B.
Пример использования функции InStr в коде VBA Excel. Макрос предназначен для итерации по каждой ячейке в столбце A и определения наличия символа "/" в тексте ячейки. Если символ "/" найден, он разделяет строку на две части: одну перед символом, а другую после. Часть, предшествующая символу "/", обновляется в текущую ячейку в столбце A, а часть после символа "/" вставляется в соответствующую ячейку в столбце B.

Такой подход позволит данные до символа "/" записывать в столбец A, а данные после "/" в столбец B:

Теперь данные до символа "/" будут записываться в столбец A, а данные после "/" - в столбец B.
Теперь данные до символа "/" будут записываться в столбец A, а данные после "/" - в столбец B.

🔔 Важно: в данном случае данные столбца А тоже будут изменены, и отменить это действие после выполнения макроса будет невозможно.

Рекомендуем создать резервную копию файла перед запуском макроса, чтобы в случае необходимости можно было восстановить исходные данные.

Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel.
Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel.

🔷 Вы также можете ознакомиться с дополнительными методами и способами использования объектов и функций VBA Excel, изучив наши предыдущие обзоры 🔽

Быстрый поиск решения. Путеводитель Excel - Google Диск
Справочные материалы VBA Excel | Excel на ИЗИ: ✅ Приемы эффективной работы в Microsoft Excel | Дзен
Библиотека Excel (полезные ссылки) | Excel на ИЗИ: ✅ Приемы эффективной работы в Microsoft Excel | Дзен

🙌 Оставайся с нами на связи и узнавай больше о других методах и приемах работы в Excel:

It's Moskovskaya_Excel на ИЗИ - YouTube
Следите за новостями, чтобы узнать больше о VBA и Excel, в частности.
Следите за новостями, чтобы узнать больше о VBA и Excel, в частности.
Excel на ИЗИ

СКАЧАТЬ ПРИМЕР 🔽

Использование функции InStr в коде VBA Excel .xlsm