Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Извлечение выбранных слов из ячеек

    Извлечение выбранных слов или словосочетаний из строк, записанных в ячейки Excel, с помощью кода VBA. Выбор слов по индексу, а словосочетаний — удалением лишнего.

    Извлечение слов из строки

    Иногда работа с текстовыми данными в Excel требует извлечения из строк отдельных слов или словосочетаний. Например, если в выгрузке списка товаров наименования размещены в одной ячейке вместе с краткими описаниями или какими-то лишними характеристиками.

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

    Извлечение слов по индексу

    Извлечение одного слова из строки, записанной в ячейку Excel, по его порядковому номеру (индексу):

    Ограничение количества слов обусловлено тем, что ограничено количество знаков, допустимых для параметра Prompt диалогового окна InputBox. Я установил 10 слов, так как моя версия VBA Excel допускает загрузку около 10 слов среднего размера. Если количество знаков будет превышено, произойдет ошибка.

    Для решения этой проблемы добавлен обработчик ошибок при превышении количества знаков с сообщением о необходимости уменьшить количество отображаемых слов.

    Обзор работы макроса

    1. Пользователь активирует первую ячейку столбца с данными.
    2. Макрос определяет диапазон — от активной ячейки до последней непустой в этом столбце.
    3. Для каждой ячейки:
      • Очищается строка от лишних пробелов.
      • Разбивается на слова по указанному разделителю (по умолчанию — пробел).
      • Выводится диалоговое окно с пронумерованным списком слов.
      • Пользователь вводит номер слова.
      • Выбранное слово записывается в соседнюю ячейку справа.
    4. Если пользователь нажимает «Отмена» в любом окне ввода — макрос немедленно завершается.
    5. По окончании обработки всех ячеек выводится сообщение об успешном завершении.

    Результат работы кода

    Результат извлечения из ячеек отдельных слов

    Настройка под свои задачи

    Смена разделителя

    По умолчанию используется пробел. Если ваши слова разделены, например, запятой, точкой с запятой или другим символом, измените значение переменной delimiter:

    Запись результата

    Строка cell.Offset(0, 1).Value означает: записать в ту же строку, но на 1 столбец правее. Если нужно на 2 столбца правее — напишите Offset(0, 2). Чтобы записать в столбец слева — используйте отрицательное число: Offset(0, -1).

    Извлечение словосочетаний

    Извлечение словосочетания из строки, записанной в ячейку Excel, после ручного удаления лишних слов в текстовом поле диалогового окна:

    Обзор работы макроса

    1. Пользователь активирует первую ячейку столбца с данными.
    2. Макрос определяет диапазон — от активной ячейки до последней непустой в этом столбце.
    3. Для каждой ячейки:
      • Очищается строка от лишних пробелов.
      • Выводится диалоговое окно со строкой из ячейки в текстовом поле.
      • Пользователь удаляет лишние слова и нажмает «OK».
      • Оставшееся словосочетание (слово) записывается в соседнюю ячейку справа.
    4. Если пользователь нажимает «Отмена» в любом окне ввода — макрос немедленно завершается.
    5. По окончании обработки всех ячеек выводится сообщение об успешном завершении.

    Результат работы кода

    Результат извлечения из ячеек словосочетаний
    Эти макросы позволяют превратить монотонную ручную работу по извлечению слов и словосочетаний из ячеек в удобное взаимодействие с диалоговым окном InputBox. Результатом этого являются меньшая утомляемость и экономия рабочего времени.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.