Как выделить повторяющиеся значения с помощью vba?

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

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

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

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

1. В каждой строке

Этот код VBA проверяет все ячейки подряд и выделяет все ячейки, дублирующиеся в строке. Проще говоря, если строка дважды имеет значение «522», она будет считаться дубликатом. Но если остальные 522 находятся в другой строке, они будут считаться уникальными.

выделить повторяющиеся значения каждой строки с помощью кода VBA
 Sub DuplicateValuesFromRow() 'Declare All Variables. Dim myCell As Range Dim myRow As Integer Dim myRange As Range Dim myCol As Integer Dim i As Integer 'Count Number of Rows and Columns myRow = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count myCol = Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count 'Loop Each Row To Check Duplicate Values and Highlight cells. For i = 2 To myRow Set myRange = Range(Cells(i, 2), Cells(i, myCol)) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next Next End Sub

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

Важные моменты

  1. Ваши данные не должны содержать пустую строку или столбец, иначе эта ячейка будет проигнорирована.
  2. Начальной ячейкой для ваших данных должна быть ячейка «A1». И если вы хотите изменить отправную точку, вам нужно изменить код.
  3. Первая строка и первый столбец вашей таблицы должны быть заголовком.

2. В каждом столбце

Этот код VBA проверяет все ячейки в столбце и выделяет все ячейки, дублирующиеся в каждом столбце. Проще говоря, если столбец дважды имеет значение «231», он будет считаться дубликатом. Но если в другом столбце окажется еще один «231», он будет считаться уникальным.

выделить повторяющиеся значения каждого столбца с помощью кода VBA
 Sub DuplicateValuesFromColumns() 'Declare All Variables Dim myCell As Range Dim myRow As Integer Dim myRange As Range Dim myCol As Integer Dim i As Integer 'Count number of rows & column myRow = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count myCol = Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count 'Loop each column to check duplicate values & highlight them. For i = 2 To myRow Set myRange = Range(Cells(2, i), Cells(myRow, i)) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next Next End Sub

3. В выборе

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

выделить повторяющиеся значения из выделения с помощью кода VBA
 Sub DuplicateValuesFromSelection() Dim myRange As Range Dim i As Integer Dim j As Integer Dim myCell As Range Set myRange = Selection For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next End Sub

4. Целочисленные данные

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

 Sub DuplicateValuesFromTable() Dim myRange As Range Dim i As Integer Dim j As Integer Dim myCell As Range Set myRange = Range(“Table1”) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next End Sub

Важное примечание. В приведенном выше коде мы использовали имя таблицы «Таблица1», вы можете изменить это имя в коде. Теперь, если у вас есть диапазон, вы можете просто использовать имя диапазона.

[Бонусный совет] Подсчитайте повторяющиеся значения

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

 Sub CountDuplicates() Dim i As Integer Dim j As Integer Dim myCell As Range Dim myRange As Integer myRange = Range("Table1").Count j = 0 For Each myCell In Range("Table1") If WorksheetFunction.CountIf(Range("Table1"), myCell.Value) > 1 Then j = j + 1 End If Next MsgBox j End Sub

Опять же, в приведенном выше коде мы использовали имя таблицы, а вы меняете или заменяете его диапазоном.

Пример файла

Загрузите этот образец файла здесь , чтобы узнать больше.

Заключение

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

А теперь помоги мне с одним.

Где мы можем улучшить эти коды?

Пожалуйста, поделитесь со мной своими мыслями в разделе комментариев, мне будет интересно услышать ваше мнение. И не забудьте поделиться этим советом с друзьями.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *