Макрос для excel для поиска одинаковых значений

Поиск повторяющихся значений (дубликатов) в одном из столбцов таблицы Excel и выделение их цветом заливки с помощью кода VBA.

Поиск дубликатов в столбце

Чаще всего повторяющиеся значения ищут в первом столбце таблицы, поэтому процедуру поиска дубликатов в VBA Excel рассмотрим именно на нем:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

Sub DuplicateSearch()

Dim ps As Long, myRange As Range, i1 As Long, i2 As Long

‘Определяем номер последней строки таблицы

ps = Cells(1, 1).CurrentRegion.Rows.Count

    ‘Нет смысла искать дубликаты в таблице, состоящей из одной строки

    If ps > 1 Then

    ‘Присваиваем объектной переменной ссылку на исследуемый столбец

    Set myRange = Range(Cells(1, 1), Cells(ps, 1))

        With myRange

        ‘Очищаем ячейки столбца от предыдущих закрашиваний

        .Interior.Color = xlNone

            For i1 = 1 To ps 1

                For i2 = i1 + 1 To ps

                    If .Cells(i1) = .Cells(i2) Then

                        ‘Если значения сравниваемых ячеек совпадают,

                        ‘обеим присваиваем новый цвет заливки

                        .Cells(i1).Interior.Color = 6740479

                        .Cells(i2).Interior.Color = 6740479

                    End If

                Next

            Next

        End With

    End If

End Sub

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

Чтобы найти повторы в другом столбце, замените номер столбца в параметрах свойства Cells (в трех местах процедуры DuplicateSearch).

Константы для заливки

Для указания цвета заливки для ячеек с повторяющимися значениями вместо числового значения цвета можно использовать предопределенные константы:

Предопределенная константа Наименование цвета
vbBlack Черный
vbBlue Голубой
vbCyan Бирюзовый
vbGreen Зеленый
vbMagenta Пурпурный
vbRed Красный
vbWhite Белый
vbYellow Желтый

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Office для бизнеса Excel 2010 Excel 2007 Еще…Меньше

Чтобы сравнить данные в двух столбцах Microsoft Excel и найти повторяющиеся записи, воспользуйтесь следующими способами. 

Способ 1. Использование формулы на этом этапе

  1. Начните Excel.

  2. На новом примере введите следующие данные (оставьте столбец B пустым):

    A

    B

    C

    1

    1

    3

    2

    2

    5

    3

    3

    8

    4

    4

    2

    5

    5

    0

  3. Введите в ячейку B1 следующую

    формулу:=IF(ISERROR(MATCH(A1,$C$1:$C$5,0)),»»,A1)

  4. Выберем ячейку С1 по B5.

  5. В Excel 2007 и более поздних версиях Excel выберите Заполнить в группе Редактирование, а затем выберите Вниз.

    Повторяющиеся числа отображаются в столбце B, как в следующем примере: 

    A

    B

    C

    1

    1

    3

    2

    2

    2

    5

    3

    3

    3

    8

    4

    4

    2

    5

    5

    5

    0

Способ 2. Использование макроса Visual Basic макроса

Предупреждение: Корпорация Майкрософт предоставляет примеры программирования только для иллюстрации без гарантии, выраженной или подразумеваемой. Это относится и не только к подразумеваемой гарантии пригодности и пригодности для определенной цели. В этой статье предполагается, что вы знакомы с языком программирования, который демонстрируется, и средствами, используемыми для создания и от debug procedures. Инженеры службы поддержки Майкрософт могут объяснить функциональные возможности конкретной процедуры. Однако они не будут изменять эти примеры, чтобы обеспечить дополнительные функциональные возможности или процедуры по построению в необходимом порядке.

Чтобы использовать макрос Visual Basic для сравнения данных в двух столбцах, с помощью следующих действий:

  1. Запустите Excel.

  2. Нажмите ALT+F11, чтобы запустить Visual Basic редактора.

  3. В меню Вставка выберите Модуль.

  4. Введите следующий код на листе модуля:

    Sub Find_Matches()
    Dim CompareRange As Variant, x As Variant, y As Variant
    ' Set CompareRange equal to the range to which you will
    ' compare the selection.
    Set CompareRange = Range("C1:C5")
    ' NOTE: If the compare range is located on another workbook
    ' or worksheet, use the following syntax.
    ' Set CompareRange = Workbooks("Book2"). _
    ' Worksheets("Sheet2").Range("C1:C5")
    '
    ' Loop through each cell in the selection and compare it to
    ' each cell in CompareRange.
    For Each x In Selection
    For Each y In CompareRange
    If x = y Then x.Offset(0, 1) = x
    Next y
    Next x
    End Sub

  5. Нажмите ALT+F11, чтобы вернуться к Excel.

    1. Введите в качестве примера следующие данные (оставьте столбец B пустым):
       

      A

      B

      C

      1

      1

      3

      2

      2

      5

      3

      3

      8

      4

      4

      2

      5

      5

      0

  6. Выберем ячейку от A1 до A5.

  7. В Excel 2007 и более поздних версиях Excel выберите вкладку Разработчик, а затем в группе Код выберите макрос.

    Примечание: Если вкладка Разработчик не отключается, возможно, ее нужно включить. Для этого выберите Файл > параметры > настроитьленту , а затем выберите вкладку Разработчик в поле настройки справа.

  8. Щелкните Find_Matches, а затем нажмите кнопку Выполнить.

    Повторяющиеся числа отображаются в столбце B. Совпадающие числа будут поместиться рядом с первым столбцом, как показано ниже.

    A

    B

    C

    1

    1

    3

    2

    2

    2

    5

    3

    3

    3

    8

    4

    4

    2

    5

    5

    5

    0

Нужна дополнительная помощь?

Skip to content

На чтение 3 мин. Просмотров 4.1k.

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

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как этот код работает
  4. Как использовать

Как макрос работает

Этот макрос перечисляет ячейки в целевом диапазоне, используя оператор For Each, чтобы активировать каждую ячейку по одной за раз. Затем мы используем функцию СЧЕТЕСЛИ, чтобы подсчитать, сколько раз значение в активной ячейке находится в выбранном
диапазоне. Если это число больше единицы, то формат ячейки — желтого цвета.

Код макроса

Sub VidelitDublikati()
'Шаг 1: Объявляем переменные
Dim MyRange As Range
Dim MyCell As Range
'Шаг 2: определяем целевой диапазон
Set MyRange = Selection
'Шаг 3: запускаем цикл через диапазон
For Each MyCell In MyRange
'Шаг 4: Убедить, что ячейка имеет форматирование текста
If WorksheetFunction.CountIf(MyRange, MyCell.Value) > 1 Then
MyCell.Interior.ColorIndex = 36
End If
'Шаг 5: Получаем следующую ячейку в диапазоне
Next MyCell
End Sub

Как этот код работает

  1. На шаге 1 объявляются две переменные объекта Range, одна из которых называется MyRange для хранения всей цели диапазона, а другая называется MyCell для хранения каждой ячейки в диапазоне.
  2. Шаг 2 заполняет переменную MyRange целевым диапазоном. В этом примере мы используем выбранный диапазон — диапазон, который был выбран в электронной таблице. Вы можете легко установить переменную MyRange для определенного диапазона, например Range («A1: Z100»). Кроме того, если ваша цель — именованный диапазон, вы можете просто ввести его имя: Range («MyNamedRange»).
  3. Шаг 3 макрос начинает проходить по каждой ячейке в целевом диапазоне, активируя каждую ячейку.
  4. Объект WorksheetFunction позволяет нам запускать многие из Excel функции электронных таблиц в VBA. Шаг 4 использует объект WorksheetFunction для запуска Функция СЧЕТЕСЛИ в VBA.
    В этом случае мы рассчитываем, сколько раз значение активной ячейки (MyCell.Value) найдено в заданном диапазоне (MyRange). Если выражение СЧЕТЕСЛИ оценивается больше 1, макрос изменяет цвет ячейки.
  5. Шаг 5 возвращается к следующей ячейке. После активации всех ячеек в целевом диапазоне макрос заканчивается.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.

0 / 0 / 0

Регистрация: 24.05.2008

Сообщений: 4

1

19.01.2009, 15:57. Показов 40078. Ответов 8


Студворк — интернет-сервис помощи студентам

Регистрация: 19.01.2009
Сообщения: 2
Репутация:10
поиск макросом дубликатов в таблице эксель
Приветствую

появилась необходимость поиска повторяющихся улиц с номерами домов в таблице эксель с помощью макроса

Итак есть столбец «улица», рядом столбец «дом». Есть еще другие Столбцы в которых есть информация.
Если есть 2 записи в которых улица и номер дома идентичны, то подсветить красным цветом чтобы менеджер мог удалить лишнюю запись.
Так как дубликатов быть не должно.
Таблица состоит из 20 000! записей(строк)

Как можно было бы организовать алгоритм обхода так, чтобы это работало максимально производительно(быстро)

во вложении к посту
тестовая база на 6000 записей + мой макрос который жутко вешает EXCEL



0



32 / 32 / 4

Регистрация: 29.12.2008

Сообщений: 75

19.01.2009, 20:01

2

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

Примечание:
Для сохранения целостности табличных данных, перед сортироукой таблицу лучше выделить. Далее воспользоваться командой Данные -> Сортировка.



0



loter

2 / 2 / 0

Регистрация: 16.01.2009

Сообщений: 11

20.01.2009, 22:43

3

я в макросах не сильна, но эту задачу можно решить еще вот так:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub check()
 
a = InputBox("введите количетсво записей")
 
For x = 3 To a
    If Cells(x, 4).Value = 1 Then GoTo d
    For y = x + 1 To a
        If Cells(x, 1).Value = Cells(y, 1).Value And Cells(x, 2).Value = Cells(y, 2).Value Then '
            'Cells(у, 1).Select
            'Selection.Interior.ColorIndex = 3
            Cells(y, 4).Value = 1
        End If
    Next y
d:
Next x
End Sub

по такому алгоритму у меня расчет занял 22 минуты 12 секунд. не знаю быстрее это или медленее чем у Вас, но мало ли… м.б. пригодится.

если доступна сотировка, то есть более быстрый и простой механизм, только он делается не макросом, а формулой. сортируем сначала по а, затем по б и в пустой столбец во вторую строку забиваем формулу «=если((A2=A3)*И(B2=B3);1;»»)». растягиваем формулу до конца.
в результате получаем единички напротив повторов.
чисто теоретически все это можно загнать в макрос



0



32 / 32 / 4

Регистрация: 29.12.2008

Сообщений: 75

21.01.2009, 18:19

4

Loter. Ты прав на все 100%. Однако вся прелесть макросов — это автоматизация твоих действий.

Представь, что тебе каждый раз после ввода новых данных необходимо будет сначала отсортировать таблицу, потом выбрать специальный столбец, куда можно будет ввести предложенную тобой формулу с ЕСЛИ, растянуть ее (на несколько тысяч записей). Потом найти все строки, в которых твоя формула дает 1 и, наконец, выделив их, залить красным цветом.

У-Ф-Ф-Ф… Даже рука устала писать. Гораздо проще все это проделать одним кликом по кнопке, который присвоен специальный макрос.

Кстати.
Твой вариант с перебором ячеек хорош, но требует много времени для большого количества записей, в то время как в Excell уже встроен достаточно быстрый механизм сортировки.



0



loter

2 / 2 / 0

Регистрация: 16.01.2009

Сообщений: 11

22.01.2009, 18:01

5

хм….

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Sub nnn()
 
'проводим сортировку примерно так
    Columns("A:B").Select
    Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortTextAsNumbers
        
'находим последнюю запись
    Range("A2").Select
    Selection.End(xlDown).Select
    x = ActiveCell.Row
    
'забиваем формулу если
    Cells(x, 100).Select
    ActiveCell.FormulaR1C1 = _
        "=IF((RC[-99]=R[1]C[-99])*AND(RC[-98]=R[1]C[-98]),""повтор"","""")"
    Selection.Copy
    Range(Selection, Selection.End(xlUp)).Select
    ActiveSheet.Paste
 
'заливаем ячейки
    For y = 1 To x
        If Cells(y, 100).Value = "повтор" Then
            Cells(y, 1).Select
            Selection.Interior.ColorIndex = 3
        End If
    Next y
    
'и фильтруем по повторам
    Columns("CV:CV").Select
    'Selection.AutoFilter
    Selection.AutoFilter Field:=1, Criteria1:="повтор"
 
'поднимаемся вверх чтобы пользователь всего этого не видел
    Selection.End(xlUp).Select
    Selection.End(xlToLeft).Select
End Sub

на базу в 6000 заняло меньше 5 секунд
всё это дело можно завязать на сочетание клавиш типа ctrl+w или конпку



0



maximus09

32 / 32 / 4

Регистрация: 29.12.2008

Сообщений: 75

23.01.2009, 17:57

6

Не знаю как bloogrox, а я результатом в общем и целом удовлетворен.

Единственное, на что нужно обратить внимание — это то, что сейчас программа использует дополнительный столбец книги Excell для того чтобы ввести формулу

Visual Basic
1
IF((RC[-99]=R[1]C[-99])*AND(RC[-98]=R[1]C[-98]),""повтор"","""")"

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



0



2 / 2 / 0

Регистрация: 16.01.2009

Сообщений: 11

23.01.2009, 20:16

7

maximus09, а о каких встроенных механизмах сортировки ты говорил?



0



32 / 32 / 4

Регистрация: 29.12.2008

Сообщений: 75

23.01.2009, 20:39

8

Почитай мое первое сообщение. Там найдешь такие слова:

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

Примечание:
Для сохранения целостности табличных данных, перед сортироукой таблицу лучше выделить. Далее воспользоваться командой Данные -> Сортировка.

Если перед выбором команды Данные -> Сортировка выбрать команду Сервис ->Макрос->Начать запись, а после того, как сортировка выполнится

вручную

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

Более подробно об описанном здесь механизме программирования можно прочитать в книге
А.Ю. Гарнаев Самоучитель VBA. — СПб.: БХВ-Петербург, 2002.

Кстати, там данный пример ручной с сортировкой описан в подробностях (что, какие опции в окне параметров сортировки нужно выбирать, зачем нужно выделять всю таблицу прежде чем производить сортировку и т.п.). Очень рекомендую книгу. Сам учился по ней. Но, стоит сказать, что она целиком посвящена VBA в Excell.



0



2 / 2 / 0

Регистрация: 16.01.2009

Сообщений: 11

24.01.2009, 07:03

9

спасибо. книжку посмотрю.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

24.01.2009, 07:03

9

Поиск совпадений в двух списках

Тема сравнения двух списков поднималась уже неоднократно и с разных сторон, но остается одной из самых актуальных везде и всегда. Давайте рассмотрим один из ее аспектов — подсчет количества и вывод совпадающих значений в двух списках. Предположим, что у нас есть два диапазона данных, которые мы хотим сравнить:

Исходные списки для сравнения

Для удобства, можно дать им имена, чтобы потом использовать их в формулах и ссылках. Для этого нужно выделить ячейки с элементами списка и на вкладке Формулы нажать кнопку Менеджер Имен — Создать (Formulas — Name Manager — Create). Также можно превратить таблицы в «умные» с помощью сочетания клавиш Ctrl+T или кнопки Форматировать как таблицу на вкладке Главная (Home — Format as Table).

Подсчет количества совпадений

Для подсчета количества совпадений в двух списках можно использовать следующую элегантную формулу:

Количество совпадений формулой

В английской версии это будет =SUMPRODUCT(COUNTIF(Список1;Список2))

Давайте разберем ее поподробнее, ибо в ней скрыто пару неочевидных фишек.

Во-первых, функция СЧЁТЕСЛИ (COUNTIF). Обычно она подсчитывает количество искомых значений в диапазоне ячеек и используется в следующей конфигурации:

=СЧЁТЕСЛИ(Где_искать; Что_искать)

Обычно первый аргумент — это диапазон, а второй — ячейка, значение или условие (одно!), совпадения с которым мы ищем в диапазоне. В нашей же формуле второй аргумент — тоже диапазон. На практике это означает, что мы заставляем Excel перебирать по очереди все ячейки из второго списка и подсчитывать количество вхождений каждого из них в первый список. По сути, это равносильно целому столбцу дополнительных вычислений, свернутому в одну формулу:

Подсчет количества совпадений отдельным столбцом

Во-вторых, функция СУММПРОИЗВ (SUMPRODUCT) здесь выполняет две функции — суммирует вычисленные СЧЁТЕСЛИ совпадения и заодно превращает нашу формулу в формулу массива без необходимости нажимать сочетание клавиш Ctrl+Shift+Enter. Формула массива необходима, чтобы функция СЧЁТЕСЛИ в режиме с двумя аргументами-диапазонами корректно отработала свою задачу.

Вывод списка совпадений формулой массива

Если нужно не просто подсчитать количество совпадений, но и вывести совпадающие элементы отдельным списком, то потребуется не самая простая формула массива:

Вывод совпадений в двух списках формулой массива

В английской версии это будет, соответственно:

=INDEX(Список1;MATCH(1;COUNTIF(Список2;Список1)*NOT(COUNTIF($E$1:E1;Список1));0))

Логика работы этой формулы следующая:

  • фрагмент СЧЁТЕСЛИ(Список2;Список1), как и в примере до этого, ищет совпадения элементов из первого списка во втором
  • фрагмент НЕ(СЧЁТЕСЛИ($E$1:E1;Список1)) проверяет, не найдено ли уже текущее совпадение выше
  • и, наконец, связка функций ИНДЕКС и ПОИСКПОЗ извлекает совпадающий элемент

Не забудьте в конце ввода этой формулы нажать сочетание клавиш Ctrl+Shift+Enter, т.к. она должна быть введена как формула массива.

Возникающие на избыточных ячейках ошибки #Н/Д можно дополнительно перехватить и заменить на пробелы или пустые строки «» с помощью функции ЕСЛИОШИБКА (IFERROR).

Вывод списка совпадений с помощью слияния запросов Power Query

На больших таблицах формула массива из предыдущего способа может весьма ощутимо тормозить, поэтому гораздо удобнее будет использовать Power Query. Это бесплатная надстройка от Microsoft, способная загружать в Excel 2010-2013 и трансформировать практически любые данные. Мощь и возможности Power Query так велики, что Microsoft включила все ее функции по умолчанию в Excel начиная с 2016 версии. 

Для начала, нам необходимо загрузить наши таблицы в Power Query. Для этого выделим первый список и на вкладке Данные (в Excel 2016) или на вкладке Power Query (если она была установлена как отдельная надстройка в Excel 2010-2013) жмем кнопку Из таблицы/диапазона (From Table):

Загрузка списков в Power Query

Excel превратит нашу таблицу в «умную» и даст ей типовое имя Таблица1. После чего данные попадут в редактор запросов Power Query. Никаких преобразований с таблицей нам делать не нужно, поэтому можно смело жать в левом верхнем углу кнопку Закрыть и загрузить — Закрыть и загрузить в… (Close & Load To…) и выбрать в появившемся окне Только создать подключение (Create only connection):

Закрыть и загрузить в        Только подключение

Затем повторяем то же самое со вторым диапазоном.

И, наконец, переходим с выявлению совпадений. Для этого на вкладке Данные или на вкладке Power Query находим команду Получить данные — Объединить запросы — Объединить (Get Data — Merge Queries — Merge):

Объединение запросов в Power Query

В открывшемся окне делаем три вещи:

  1. выбираем наши таблицы из выпадающих списков
  2. выделяем столбцы, по которым идет сравнение
  3. выбираем Тип соединения = Внутреннее (Inner Join)

Слияние для выявления совпадающих строк

После нажатия на ОК на экране останутся только совпадающие строки:

Результат слияния

Ненужный столбец Таблица2 можно правой кнопкой мыши удалить, а заголовок первого столбца переименовать во что-то более понятное (например Совпадения). А затем выгрузить полученную таблицу на лист, используя всё ту же команду Закрыть и загрузить (Close & Load):

Выгрузка результатов на лист

Если значения в исходных таблицах в будущем будут изменяться, то необходимо не забыть обновить результирующий список совпадений правой кнопкой мыши или сочетанием клавиш Ctrl+Alt+F5

Макрос для вывода списка совпадений

Само-собой, для решения задачи поиска совпадений можно воспользоваться и макросом. Для этого нажмите кнопку Visual Basic на вкладке Разработчик (Developer). Если ее не видно, то отобразить ее можно через Файл — Параметры — Настройка ленты (File — Options — Customize Ribbon).

В окне редактора Visual Basic нужно добавить новый пустой модуль через меню Insert — Module и затем скопировать туда код нашего макроса:

Sub Find_Matches_In_Two_Lists()
    Dim coll As New Collection
    Dim rng1 As Range, rng2 As Range, rngOut As Range
    Dim i As Long, j As Long, k As Long

    Set rng1 = Selection.Areas(1)
    Set rng2 = Selection.Areas(2)
    Set rngOut = Application.InputBox(Prompt:="Выделите ячейку, начиная с которой нужно вывести совпадения", Type:=8)

    'загружаем первый диапазон в коллекцию
    For i = 1 To rng1.Cells.Count
        coll.Add rng1.Cells(i), CStr(rng1.Cells(i))
    Next i
    
    'проверяем вхождение элементов второго диапазона в коллекцию
    k = 0
    On Error Resume Next
    For j = 1 To rng2.Cells.Count
        Err.Clear
        elem = coll.Item(CStr(rng2.Cells(j)))
        If CLng(Err.Number) = 0 Then
            'если найдено совпадение, то выводим со сдвигом вниз
            rngOut.Offset(k, 0) = rng2.Cells(j)
            k = k + 1
        End If
    Next j
End Sub

Воспользоваться добавленным макросом очень просто. Выделите, удерживая клавишу Ctrl, оба диапазона и запустите макрос кнопкой Макросы на вкладке Разработчик (Developer) или сочетанием клавиш Alt+F8. Макрос попросит указать ячейку, начиная с которой нужно вывести список совпадений и после нажатия на ОК сделает всю работу:

Макрос поиска совпадений в двух списках

Более совершенный макрос подобного типа есть, кстати, в моей надстройке PLEX для Microsoft Excel.

Ссылки по теме

  • Поиск различий в двух списках Excel
  • Слияние двух списков без дубликатов (3 способа)
  • Что такое макросы, как их использовать, куда копировать код макросов на Visual Basic

Понравилась статья? Поделить с друзьями:
  • Макрос в excel только для моего файла
  • Макрос для excel замена точек на запятые
  • Макрос для excel для копирования данных с листа
  • Макрос в excel таблица в ячейках
  • Макрос для excel добавить кнопку