Ниже мы рассмотрим программу в Excel VBA, который удаляет дубликаты.

Ситуация:

В столбце А мы имеем 10 номеров. Мы хотим, чтобы удалить дубликаты из этих чисел и поместить уникальные номера в столбце B.

Remove Duplicates in Excel VBA

  1. Во-первых, мы объявляем четыре переменные. toAdd типа Boolean, uniqueNumbers целочисленного типа, я типа Integer, и J типа Integer.

Dim toAdd As Boolean, uniqueNumbers As Integer, i As Integer, j As Integer
  1. Далее мы пишем первый номер столбца A в колонке B, так как первый номер всегда «уникальный».

Cells(1, 2).Value = Cells(1, 1).Value
  1. Мы инициализируем две переменные. Мы только что добавили один номер в столбце В, поэтому мы инициализируем uniqueNumbers со значением 1. Положим toAdd к подлинному при условии, что следующие потребности добавления номера, а также (это не обязательно, конечно).

uniqueNumbers = 1

toAdd = True

Нам необходимо определить, является ли второй номер «уникальный» или нет. Это может быть сделано в очень простой способ. Только если номер уже не в столбце В, второе число должно быть добавлено к колонке B.

  1. Мы также должны проверить это для третьего числа, четвертого числа, и так далее. Мы начинаем цикл For Next для этого.

For i = 2 To 10
  1. Теперь наступает самая важная часть программы. Если второе число равно одному из чисел в столбце 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
  1. Только если 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
  1. И, наконец, мы устанавливаем toAdd в True, если предположить, что следующий номер (третий номер) должен быть добавлен. Опять же, это не всегда верно.

toAdd = True
  1. Не забудьте закрыть петлю.

Next i
  1. Поместите макрос в командную кнопку и протестировать его.

Результат:

Remove Duplicates Result