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

Вопрос: В столбцах A и B существует несколько значений. Я хочу, чтобы макрос проверял более 40 тыс. Строк данных в обоих столбцах, а затем извлекал список уникальных записей из каждого столбца в следующий столбец, т.е. столбцы C и D соответственно. В этом примере я беру всего 40 строк выборки данных.

Ниже приведен снимок данных:

img1

===

Чтобы сравнить список из двух столбцов, нам нужно выполнить следующие шаги для запуска редактора VB:

Щелкните вкладку «Разработчик». В группе «Код» выберите Visual Basic

img2

  • Скопируйте приведенный ниже код в стандартный модуль

Sub PullUniques()

Dim rngCell As Range

For Each rngCell In Range("A2:A40")

If WorksheetFunction.CountIf(Range("B2:B40"), rngCell) = 0 Then

Range("C" & Rows.Count).End(xlUp).Offset(1) = rngCell

End If

Next

For Each rngCell In Range("B2:B40")

If WorksheetFunction.CountIf(Range("A2:A40"), rngCell) = 0 Then

Range("D" & Rows.Count).End(xlUp).Offset(1) = rngCell

End If

Next

End Sub

img3

  • Вышеупомянутый макрос готов к работе; либо мы можем нажать клавишу F5 — если вы в данный момент находитесь на экране редактора Visual Basic — либо мы можем использовать сочетания клавиш «ALT + F8», выбрать макрос и нажать кнопку «Выполнить»

img4

  • Уникальный список из столбцов A и B будет автоматически создан в столбцах C и D

img5

Пояснение к коду:

В приведенном выше коде мы будем использовать функцию IF вместе с циклом For для получения результата.

Мы объявляем Dim rngCell As Range; цель объявления rngCell As Range заключается в том, что мы хотим присвоить диапазону выборки «A2: A40» определенное имя, например, «rngCell» в нашем примере. Для каждого rngCell In Range («A2: A40»); мы проверим каждую ячейку в «rngCell» с условием If WorksheetFunction.CountIf (Range («B2: B40»), rngCell) = 0 Then; в этой строке кода используется функция COUNTIF VBA для проверки диапазона критериев B2: B40 с критериями rngCell равно нулю, тогда в столбце C будет сохранено значение, хранящееся в rngCell. Аналогичным образом мы запустим For Each Loop для столбца B и извлечь уникальные значения в столбце D Заключение: мы можем получить уникальный список текста или значений из каждого столбца; имя заголовка столбца C (Результаты — существует в списке 1, но не в списке 2) и столбца D (Результаты — существует в списке 2, но не в списке 1). В случае, если у нас есть аналогичное требование, но количество столбцов больше двух, нам нужно настроить код, чтобы получить результат.

image 29

Если вам понравились наши блоги, поделитесь ими с друзьями на Facebook. А также вы можете подписаться на нас в Twitter и Facebook.

Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить, дополнить или усовершенствовать нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]