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

VBA Excel. Ошибки в таблице – поиск и исправление

    Поиск ошибок в таблице и их исправление с помощью кода VBA Excel. Создание словаря ошибок и автоматическое добавление в него слов с неправильным написанием.

    Описание задачи

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

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

    Наименованиями объектов могут быть названия товаров, брендов, компьютерных игр, растений, животных, стран, курортов, городов, аэропортов и т.д. Мы будем использовать названия городов.

    Создание словаря

    Создайте новый лист и переименуйте его ярлык в «Словарь». Словарь может быть размещен в файле с таблицей или в отдельной книге Excel.

    Если вам приходится исправлять ошибки в нескольких различных списках объектов, лучше создать отдельный файл со всеми словарями.

    Изначально на листе «Словарь» следует дать названия первым двум колонкам. Например, так:

    Наименование с ошибкой Правильное написание

    Первый запуск кода VBA Excel добавит все уникальные наименования из указанного диапазона таблицы в первую колонку словаря. В этом столбце будут содержаться и по одному экземпляру правильного наименования.

    Если в исходной таблице все наименования одного объекта окажутся ошибочными, то в первый столбец словаря следует вручную добавить правильное написание этого объекта.

    Вторая колонка словаря заполняется вручную. Напротив каждого наименования с ошибкой пишем правильное во втором столбце.

    Второй запуск программы исправит все ошибки в указанном диапазоне таблицы.

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

    Исправление ошибок

    Будем решать задачу с условием, что таблица и словарь расположены в одной книге Excel. Активный лист – лист с таблицей.

    Для ускорения кода VBA будем использовать в циклах массивы, а не переменные диапазона (as Range). Словарь загрузим в объект Dictionary.

    Переменные:

    • colList – номер столбца со списком в таблице;
    • strList – номер последней строки в таблице;
    • strDict – номер последней строки в словаре на листе «Словарь»;
    • i – счетчик циклов;
    • myList1 – массив для списка из таблицы;
    • myList2 – массив для списков из словаря на листе «Словарь»;
    • myDict – объект Dictionary (словарь).

    Работа кода в картинках

    Исходная таблица:

    Исходный словарь:

    Словарь после первого запуска кода:

    Дозаполненный вручную словарь:

    Таблица после второго запуска кода:

    Лист с таблицей при запуске представленного выше кода VBA Excel должен быть активным.


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