Что делает макрос: С помощью одного из макросов в справочнике макроса, вы можете быстро найти и выделить дубликаты ваших данных. Это может быть весьма полезно. Но если у вас много записей в диапазоне, вы можете сделать дополнительный шаг — скрыть все не повторяющиеся строки.
Как макрос работает
Этот макрос перечисляет ячейки в целевом диапазоне, используя оператор For Each, чтобы активировать каждую ячейку по одной за раз. Затем мы используем функцию СЧЕТЕСЛИ, чтоб подсчитать, сколько раз значение в активной ячейке находится в выбранном диапазоне. Если это число один, мы скрываем строку, в которой находится активная ячейка. Если это число больше единицы, тогда формат ячейки желтый и оставляем строку видной.
Код макроса
Sub SkritPovtoryayuschiesyaStroki()
'Шаг 1: Объявляем переменные
Dim MyRange As Range
Dim MyCell As Range
'Шаг 2: Определяем целевой диапазон
Set MyRange = Selection
'Шаг №: Запускаем цикл по диапазону
For Each MyCell In MyRange
'Шаг 4: Убедитесь, что ячейки имеют текстовый формат
If Not IsEmpty(MyCell) Then
If WorksheetFunction.CountIf(MyRange, MyCell) > 1 Then
MyCell.Interior.ColorIndex = 36
MyCell.EntireRow.Hidden = False
Else
MyCell.EntireRow.Hidden = True
End If
End If
'Шаг 5: Получаем следующую ячейку в диапазоне
Next MyCell
End Sub
Как этот код работает
- Шаг 1 объявляет две переменные объекта Range.
- Шаг 2 заполняет переменную MyRange с целевым диапазоном.
- Шаг 3 начинает цикл через каждую ячейку в целевом диапазоне, активизируя каждую ячейку.
- Сначала мы используем функцию IsEmpty, чтобы убедиться, что ячейка не пуста.
Макрос не будет скрывать автоматически строки без данных в целевом диапазоне. Затем мы используем объект WorksheetFunction, чтобы запустить функцию СЧЕТЕСЛИ в VBA. В данном случае, мы рассчитываем количество ячеек (MyCell. Value), которые находятся в указанном диапазоне (MyRange).
Если выражение СЧЕТЕСЛИ имеет значение больше 1, то мы меняем цвет ячейки и устанавливаем свойство EntireRow Hidden = False. Это гарантирует, что строка будет видна.
Если выражение СЧЕТЕСЛИ не принимает значение больше 1, то макрос переходит к аргументу Else. Здесь мы устанавливаем свойство EntireRow Hidden = True. Это гарантирует, что строка не видна. - Шаг 5 повторяет цикл, чтобы получить следующую ячейку. После просмотра всех ячеек в целевом диапазоне макрос заканчивается.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код.