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

VBA Excel. Удаление повторяющихся значений в диапазоне ячеек

    Удаление повторяющихся значений (дубликатов) в диапазоне ячеек с помощью кода VBA Excel. Метод Range.RemoveDuplicates — синтаксис, параметры, примеры.

    Метод Range.RemoveDuplicates

    Метод Range.RemoveDuplicates предназначен в VBA Excel для удаления повторяющихся значений по столбцам в заданном диапазоне ячеек рабочего листа. Строки с обнаруженными дубликатами удаляются целиком.

    Синтаксис метода Range.RemoveDuplicates

    expression. RemoveDuplicates (Columns , Header),

    где expression — переменная или выражение, возвращающее объект Range.

    Параметры метода Range.RemoveDuplicates

    Наименование Описание
    Columns Массив индексов столбцов, содержащих ячейки с повторяющимися значениями. Обязательный параметр. Тип данных – Variant.
    Header Указывает, содержит ли первая строка диапазона заголовок, который не участвует в поиске дубликатов:

    • xlNo — первая строка списка не содержит заголовок (значение по умолчанию);
    • xlYes — первая строка диапазона содержит заголовок;
    • xlGuess — VBA Excel решает сам, есть ли у списка заголовок.

    Необязательный параметр. Тип данных – XlYesNoGuess.

    Метод работает как с круглыми скобками, в которые заключены параметры, так и без них. Если требуется указать несколько столбцов в параметре Columns, следует использовать функцию Array, например, Array(2, 3).

    Примеры удаления дубликатов

    Исходная таблица для всех примеров

    Исходная таблица для удаления дубликатов

    По третьей колонке легко определить, какие строки были удалены.

    Пример 1
    Удаление повторяющихся значений по первому столбцу:

    Range("A1:C10").RemoveDuplicates 1

    или

    Range(Cells(1, 1), Cells(10, 3)).RemoveDuplicates (1)

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

    Результат:

    Пример 2
    Удаление дубликатов по первому столбцу с указанием, что первая строка содержит заголовок:

    Range("A1:C10").RemoveDuplicates 1, xlYes

    Результат:

    Здесь мы видим, что первая строка не учитывалась при поиске повторяющихся значений.

    Пример 3
    Удаление дубликатов по первому и второму столбцам:

    Range("A1:C10").RemoveDuplicates Array(1, 2)

    Результат:

    Обратите внимание, что при удалении повторяющихся значений по нескольким столбцам, будут удалены дубли только тех строк, в которых во всех указанных столбцах содержатся одинаковые значения. В третьем примере удалены «лишние» строки с дублями значений по двум первым столбцам: Корова+Лягушка, Свинья+Бурундук и Овца+Собака.


    Смотрите, как отобрать уникальные значения из списка в VBA Excel с помощью объекта Collection и объекта Dictionary.

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