Удаление дубликатов в Excel VBA
Ниже мы рассмотрим программу в Excel VBA, который удаляет дубликаты.
Ситуация:
В столбце А мы имеем 10 номеров. Мы хотим, чтобы удалить дубликаты из этих чисел и поместить уникальные номера в столбце B.
-
Во-первых, мы объявляем четыре переменные. toAdd типа Boolean, uniqueNumbers целочисленного типа, я типа Integer, и J типа Integer.
Dim toAdd As Boolean, uniqueNumbers As Integer, i As Integer, j As Integer
-
Далее мы пишем первый номер столбца A в колонке B, так как первый номер всегда «уникальный».
Cells(1, 2).Value = Cells(1, 1).Value
-
Мы инициализируем две переменные. Мы только что добавили один номер в столбце В, поэтому мы инициализируем uniqueNumbers со значением 1. Положим toAdd к подлинному при условии, что следующие потребности добавления номера, а также (это не обязательно, конечно).
uniqueNumbers = 1 toAdd = True
Нам необходимо определить, является ли второй номер «уникальный» или нет. Это может быть сделано в очень простой способ. Только если номер уже не в столбце В, второе число должно быть добавлено к колонке B.
-
Мы также должны проверить это для третьего числа, четвертого числа, и так далее. Мы начинаем цикл For Next для этого.
For i = 2 To 10
-
Теперь наступает самая важная часть программы. Если второе число равно одному из чисел в столбце B (до сих пор у нас есть только один уникальный номер), мы устанавливаем toAdd Ложь, потому что в этом случае мы не хотим, чтобы добавить этот номер! (Это не «уникальный»). На данный момент uniqueNumbers по-прежнему равна 1, но uniqueNumbers может быть целый список. Для того, чтобы проверить весь этот список, нам нужно еще для следующего цикла. Опять же: если число мы хотим добавить, равно одному из чисел в этом списке, toAdd будет установлен в значение False и не будет добавлен номер. Добавьте следующие строки кода:
For j = 1 To uniqueNumbers If Cells(i, 1).Value = Cells(j, 2).Value Then toAdd = False End If Next j
-
Только если toAdd еще истинно и не установлено значение False, то Excel VBA необходимо добавить номер столбца B. В то же время, мы увеличиваем uniqueNumbers на 1, потому что у нас есть один уникальный номер больше сейчас. Следующие строки кода получить работу:
If toAdd = True Then Cells(uniqueNumbers + 1, 2).Value = Cells(i, 1).Value uniqueNumbers = uniqueNumbers + 1 End If
-
И, наконец, мы устанавливаем toAdd в True, если предположить, что следующий номер (третий номер) должен быть добавлен. Опять же, это не всегда верно.
toAdd = True
-
Не забудьте закрыть петлю.
Next i
-
Поместите макрос в командную кнопку и протестировать его.
Результат: