Поиск дубликатов excel на разных листах

Как найти повторяющиеся или уникальные значения в двух столбцах на двух листах?

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

Сравните два одинаковых столбца заголовка в двух электронных таблицах с формулой в Excel

Сравните два диапазона в двух электронных таблицах с VBA

Сравните два диапазона в двух электронных таблицах с Kutools for Excel


стрелка синий правый пузырь Сравните два одинаковых столбца заголовка в двух электронных таблицах с формулой в Excel

С помощью формулы в Excel вы можете сравнить два одинаковых столбца заголовка, как показано ниже на разных листах, и найти повторяющиеся и уникальные значения:

1. Набрав эту формулу = СЧЁТЕСЛИ (Лист1! $ A: $ A; A1) в пустой ячейке, которая находится рядом с диапазоном на листе 3. См. снимок экрана:

2. Нажмите Enter на клавиатуре, а затем перетащите маркер заполнения, чтобы заполнить диапазон, который вы хотите сравнить с диапазоном на Листе 1. (Номер Ноль означает повторяющиеся значения в двух диапазонах, а Номер 1 означает уникальные значения в Листе 3, но не в Листе 1)

Советы:

1. Эта формула может сравнивать только два столбца с одинаковым заголовком в двух электронных таблицах.

2. Если вы хотите найти уникальные значения в Sheet1, но не в Sheet3, вам необходимо ввести приведенную выше формулу =СЧЁТЕСЛИ (Лист3! $ A: $ A; A1) в Sheet1.


стрелка синий правый пузырь Сравните два диапазона в двух электронных таблицах с VBA

1. Держать ALT и нажмите F11 на клавиатуре, чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модули, и скопируйте VBA в модуль.

VBA: сравнить два диапазона в двух таблицах

Sub CompareRanges () 'Обновление 20130815 Dim WorkRng1 как диапазон, WorkRng2 как диапазон, Rng1 как диапазон, Rng2 как диапазон xTitleId = "KutoolsforExcel" Установить WorkRng1 = Application.InputBox ("Range A:", xTitleId, "", Type: = 8 ) Установите WorkRng2 = Application.InputBox ("Range B:", xTitleId, Type: = 8) Для каждого Rng1 в WorkRng1 rng1Value = Rng1.Value для каждого Rng2 в WorkRng2 Если rng1Value = Rng2.Value Тогда Rng1.Interior.Color = VBA .RGB (255, 0, 0) Выйти за конец, если следующий следующий конец Sub

3. Нажмите Run или нажмите F5 для запуска VBA.

4. На экране отображается диалоговое окно, и вы должны выбрать один диапазон, с которым хотите сравнить. Смотрите скриншот:

5. Нажмите Ok и другое диалоговое окно отображается для выбора второго диапазона. Смотрите скриншот:

6. Нажмите Ok, а повторяющиеся значения как в диапазоне A, так и в диапазоне B выделяются красным фоном в диапазоне A. См. снимок экрана:

Советы: с помощью этого VBA вы можете сравнивать два диапазона как на одном, так и на разных листах.


стрелка синий правый пузырь Сравните два диапазона в двух электронных таблицах с Kutools for Excel

Если формула вам не удобна, а VBA вам сложно, вы можете попробовать Kutools for Excel‘s Сравнить диапазоны функции.

Kutools for Excel включает более 300 удобных инструментов Excel. Бесплатная пробная версия без ограничений в течение 30 дней. Получить сейчас

Пожалуйста, примените Сравнить диапазоны функция, нажав Кутулс > Сравнить диапазоны. Смотрите скриншот:

Сравните с двумя столбцами на разных листах:

1. Нажмите Кутулс > Сравнить диапазоны, на экране отобразится диалоговое окно. Смотрите скриншот:

2. Укажите диапазоны и правила, сделайте следующее:

Оставьте Сравнить в том же диапазоне снимите флажок и выберите два диапазона, нажав Диапазон А и Диапазон B, см. снимок экрана:

Укажите те же значения или разные значения, которые вы хотите найти, в раскрывающемся списке в разделе «Правила»;

3. Нажмите Ok. Всплывающее диалоговое окно сообщает вам, что выбраны те же значения.

4. Нажмите Ok во всплывающем диалоговом окне. В диапазоне A выбираются одинаковые значения между двумя диапазонами.

Сравните два диапазона в электронных таблицах

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

1. Нажмите Кутулс > Сравнить диапазоны, на экране отобразится диалоговое окно.

2. Укажите диапазоны и правила, сделайте следующее:

Оставлять Сравнить в том же диапазоне снимите флажок и выберите два диапазона, нажав Диапазон А и Диапазон B;

Укажите различные значения, которые вы хотите найти, в раскрывающемся списке в разделе «Правила»;

Проверить, что у моих данных есть заголовки in Опции раздел;

3. Нажмите Ok. Всплывающее диалоговое окно сообщает вам, что выбраны те же значения.

4. Нажмите Ok во всплывающем диалоговом окне. Выбираются разные значения в диапазоне А. Смотрите скриншот:

Если вы хотите узнать разные значения в диапазоне B листа Sheet2, вам нужно поменять местами два диапазона.

Сравнить диапазоны функция также может сравнивать диапазоны на одном листе. Щелкните здесь, чтобы узнать больше о сравнительных диапазонах.


Относительные статьи:

  • Найдите уникальные значения между двумя столбцами
  • Найдите повторяющиеся значения в двух столбцах
  • Удалите дубликаты и замените пустыми ячейками
  • Отфильтровать уникальные записи из выбранного столбца

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Выделение повторяющихся значений на разных листах.

arti8181

Дата: Воскресенье, 25.08.2019, 23:09 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Ребята подскажите пожалуйста. Имеются числовые значения на листе 1. Имеются также числовые значения на листе 2. Как сделать так, чтобы подсвечивались вновь набранные числа на листе 1, если такие числа дублируются с числами которые находятся на листе 2.

К сообщению приложен файл:

_..xlsx
(14.0 Kb)

Сообщение отредактировал arti8181Понедельник, 26.08.2019, 12:51

 

Ответить

китин

Дата: Понедельник, 26.08.2019, 07:23 |
Сообщение № 2

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

Замечаний:
0% ±


Excel 2007;2010;2016

arti8181, — Прочитайте Правила форума
— Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 100кб согласно п.3 Правил форума


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

китин

Дата: Понедельник, 26.08.2019, 14:21 |
Сообщение № 3

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

Замечаний:
0% ±


Excel 2007;2010;2016

arti8181, вы пошто свою тему уже три раза продублировали? это нарушение Правил форума. Дубли удалил


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

Pelena

Дата: Понедельник, 26.08.2019, 18:13 |
Сообщение № 4

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Условным форматированием

Код

=СЧЁТЕСЛИ(Лист2!$A:$A;A3)

К сообщению приложен файл:

-1-.xlsx
(14.5 Kb)


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

arti8181

Дата: Понедельник, 26.08.2019, 22:11 |
Сообщение № 5

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Pelena, спасибо. Но при такой формуле на лист 2 нужно вносить значения только в столбец А. а как сделать так чтобы на лист 2 можно было вводить в любой столбец и в любую строку, а на листе 1 соответственно подкрашивалась ячейка, если конечно дублируется с листом 2.

 

Ответить

Pelena

Дата: Понедельник, 26.08.2019, 22:59 |
Сообщение № 6

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

В формуле вместо Лист2!$A:$A поставьте нужный диапазон


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

In this article, we will look into how we can use the VLOOKUP to find duplicate values in Excel.

 To do so follow the below steps:

  • Let’s make two columns of different section to check VLOOKUP formula on columns:

Created Two Columns 

  • Here is the formula we are going to use:
=VLOOKUP(List1,List2,TRUE,FALSE)
  • In this formula, the List-1 names will be searched in List-2. If there exists any duplicate name, the formula will return the name from List-1. Let`s look closely at our example for better clarification.
  • In C2 we will write this formula =VLOOKUP(A2:A10,B2:B10,TRUE,FALSE) and then press enter.

  • Now, we will see this result:

Here Himesh is duplicate value

  • Here the Himesh is found because the VLOOKUP function searches this name from Section A to Section B. When the same name is found it will output the result from Section A.
  • Now drag the list and see all values.

Here we drag the formulated Cells

  • The #N/A results are found because, in those particular cells, the names from column A are not found in column B.
  • In the Result column, you’re seeing a total of 2 duplicate values ( Himesh, Pragya). #N/A values are representing the unique values of column Section A.

Using VLOOKUP to find duplicate values in two Excel worksheets

We can also use the VLOOKUP to find duplicate values between two Excel worksheets. To do so follow the below steps:

  • Make two excel workbooks Section A and Section B.

Two Workbooks

  • In the B2 of Section B type the below code and press enter:-
=IF(ISERROR(VLOOKUP(A2,'Section A'!A1:A10,1,0)),"Unique","Duplicate")

Section A and Section B on different workbooks

Using VLOOKUP to find duplicates in two Workbooks of Excel

We can also use the VLOOKUP to find duplicate values between two Excel workbooks. To do so follow the below steps:

  • Now we create a new Section A in a new Workbook with different values.

New Workbook

  • And In our main workbook which we were working (in our last example), create another worksheet titled Sheet 1 and again create a list of products.

Another workbook named Sheet1

  • Now in cell C2 of Sheet1, write down the following formula and press enter.
=IF(ISERROR(VLOOKUP(B2,[VL]Section A!$A$2:$A$10,1,0)),"Unique", "Duplicate")
  • You will get the result as Unique because value does not exist in Section A.

Result

  • Now Drag Down the formulated cell to see out the result of the whole column.

Skip to content

Как найти повторяющиеся значения в таблице Excel

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

Работая с большими наборами данных в Excel или объединяя несколько небольших электронных таблиц в более крупные, вы можете столкнуться с большим числом одинаковых строк.

И сегодня я хотел бы поделиться несколькими быстрыми и эффективными методами выявления дубликатов в одном списке. Эти решения работают во всех версиях Excel 2016, Excel 2013, 2010 и ниже. Вот о чём мы поговорим:

  • Поиск повторяющихся значений включая первые вхождения
  • Поиск дубликатов без первых вхождений
  • Определяем дубликаты с учетом регистра
  • Как извлечь дубликаты из диапазона ячеек
  • Как обнаружить одинаковые строки в таблице данных
  • Использование встроенных фильтров Excel
  • Применение условного форматирования
  • Поиск совпадений при помощи встроенной команды «Найти»
  • Определяем дубликаты при помощи сводной таблицы
  • Duplicate Remover — быстрый и эффективный способ найти дубликаты

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

Поиск повторяющихся значений включая первые вхождения.

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

=СЧЁТЕСЛИ(A:A; A2)>1

Где А2 — первая ячейка из области для поиска.

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

Как вы могли заметить на скриншоте выше, формула возвращает ИСТИНА, если имеются совпадения.  А для встречающихся только 1 раз значений она показывает ЛОЖЬ.

Подсказка! Если вы ищите повторы в определенной области, а не во всей колонке, обозначьте нужный диапазон и “зафиксируйте” его знаками $. Это значительно ускорит вычисления. Например, если вы ищете в A2:A8, используйте

=СЧЕТЕСЛИ($A$2:$A$8, A2)>1

Если вас путает ИСТИНА и ЛОЖЬ в статусной колонке и вы не хотите держать в уме, что из них означает повторяющееся, а что — уникальное, заверните свою СЧЕТЕСЛИ в функцию ЕСЛИ и укажите любое слово, которое должно соответствовать дубликатам и уникальным:

=ЕСЛИ(СЧЁТЕСЛИ($A$2:$A$17; A2)>1;»Дубликат»;»Уникальное»)

Если же вам нужно, чтобы формула указывала только на дубли, замените «Уникальное» на пустоту («»):

=ЕСЛИ(СЧЁТЕСЛИ($A$2:$A$17; A2)>1;»Дубликат»;»»)

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

Поиск неуникальных значений без учета первых вхождений

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

Если вам нужно указать только совпадения, давайте немного изменим:

=ЕСЛИ(СЧЁТЕСЛИ($A$2:$A2; A2)>1;»Дубликат»;»»)

На скриншоте ниже вы видите эту формулу в деле.

Нетрудно заметить, что она не обозначает первое появление слова, а начинает отсчет со второго.

Чувствительный к регистру поиск дубликатов

Хочу обратить ваше внимание на то, что хоть формулы выше и находят 100%-дубликаты, есть один тонкий момент — они не чувствительны к регистру. Быть может, для вас это не принципиально. Но если в ваших данных абв, Абв и АБВ — это три разных параметра – то этот пример для вас.

Как вы могли уже догадаться, выражения, использованные нами ранее, с такой задачей не справятся. Здесь нужно выполнить более тонкий поиск, с чем нам поможет следующая функция массива:

{=ЕСЛИ(СУММ((—СОВПАД($A$2:$A$17;A2)))<=1;»»;»Дубликат»)}

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

Если вернуться к содержанию, то здесь используется функция СОВПАД для сравнения целевой ячейки со всеми остальными ячейками с выбранной области. Результат возвращается в виде ИСТИНА (совпадение) или ЛОЖЬ (не совпадение), которые затем преобразуются в массив из 1 и 0 при помощи оператора (—).

После этого, функция СУММ складывает эти числа. И если полученный результат больше 1, функция ЕСЛИ сообщает о найденном дубликате.

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

Смородина и арбуз, которые встречаются дважды, не отмечены в нашем поиске, так как регистр первых букв у них отличается.

Как извлечь дубликаты из диапазона.

Формулы, которые мы описывали выше, позволяют находить дубликаты в определенном столбце. Но часто речь идет о нескольких столбцах, то есть о диапазоне данных.

Рассмотрим это на примере числовой матрицы. К сожалению, с символьными значениями этот метод не работает.

При помощи формулы массива

{=ИНДЕКС(НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ($A$2:$E$11;$A$2:$E$11)>1;$A$2:$E$11);СТРОКА($1:$100)); НАИМЕНЬШИЙ(ЕСЛИОШИБКА(ЕСЛИ(ПОИСКПОЗ(НАИМЕНЬШИЙ(ЕСЛИ( СЧЁТЕСЛИ($A$2:$E$11;$A$2:$E$11)>1;$A$2:$E$11);СТРОКА($1:$100)); НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ($A$2:$E$11;$A$2:$E$11)>1;$A$2:$E$11); СТРОКА($1:$100));0)=СТРОКА($1:$100);СТРОКА($1:$100));»»);СТРОКА()-1))}

вы можете получить упорядоченный по возрастанию список дубликатов. Для этого введите это выражение в нужную ячейку и нажмите Ctrl+Alt+Enter.

Затем протащите маркер заполнения вниз на сколько это необходимо.

Чтобы убрать сообщения об ошибке, когда дублирующиеся значения закончатся, можно использовать функцию ЕСЛИОШИБКА:

=ЕСЛИОШИБКА(ИНДЕКС(НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ($A$2:$E$11;$A$2:$E$11)>1;$A$2:$E$11); СТРОКА($1:$100));НАИМЕНЬШИЙ(ЕСЛИОШИБКА(ЕСЛИ(ПОИСКПОЗ( НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ($A$2:$E$11;$A$2:$E$11)>1;$A$2:$E$11); СТРОКА($1:$100));НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ($A$2:$E$11;$A$2:$E$11)>1;$A$2:$E$11); СТРОКА($1:$100));0)=СТРОКА($1:$100);СТРОКА($1:$100));»»);СТРОКА()-1));»»)

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

Поэтому если вам нужно разместить его, к примеру, в ячейке K4, то выражение СТРОКА()-1 в конце замените на СТРОКА()-3.

Обнаружение повторяющихся строк

Мы рассмотрели, как обнаружить одинаковые данные в отдельных ячейках. А если нужно искать дубликаты-строки?

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

Итак, имеются данные о товарах и заказчиках.

Создадим справа от наших данных формулу, объединяющую содержание всех расположенных слева от нее ячеек.

Предположим, что данные хранятся в столбцах А:C. Запишем в ячейку D2:

=A2&B2&C2

Добавим следующую формулу в ячейку E2. Она отобразит, сколько раз встречается значение, полученное нами в столбце D:

=СЧЁТЕСЛИ(D:D;D2)

Скопируем вниз для всех строк данных.

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

Если вас не интересует определенный столбец, просто не включайте его в выражение, находящееся в D. Например, если вам хочется обнаружить совпадающие строки, не учитывая при этом значение Заказчик, уберите из объединяющей формулы упоминание о ячейке С2.

Обнаруживаем одинаковые ячейки при помощи встроенных фильтров Excel.

Теперь рассмотрим, как можно обойтись без формул при поиске дубликатов в таблице. Быть может, кому-то этот метод покажется более удобным, нежели написание выражений Excel.

Организовав свои данные в виде таблицы, вы можете применять к ним различные фильтры. Фильтр в таблице вы можете установить по одному либо по нескольким столбцам. Давайте рассмотрим на примере.

В первую очередь советую отформатировать наши данные как «умную» таблицу. Напомню: Меню Главная – Форматировать как таблицу.

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

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

Но при этом вы видите дубли только по отфильтрованному. Если данных много, то искать таким способом последовательного перебора будет несколько утомительно. Ведь слишком много раз нужно будет устанавливать и менять фильтр.

Используем условное форматирование.

Выделение цветом по условию – весьма важный инструмент Excel, о котором достаточно подробно мы рассказывали.

Сейчас я покажу, как можно в Экселе найти дубли ячеек, просто их выделив цветом.

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

Но здесь мы не можем исключить первые появления – подсвечивается всё.

Но эту проблему можно решить, использовав формулу условного форматирования.

=СЧЁТЕСЛИ($B$2:$B2; B2)>1

Результат работы формулы выденения повторяющихся значений вы видите выше. Они выделены зелёным цветом.

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

Поиск совпадений при помощи команды «Найти».

Еще один простой, но не слишком технологичный способ – использование встроенного поиска.

Зайдите на вкладку Главная и кликните «Найти и выделить». Откроется диалоговое окно, в котором можно ввести что угодно для поиска в таблице. Чтобы избежать опечаток, можете скопировать искомое прямо из списка данных.

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

В случае, когда объём информации очень велик и требуется ускорить работу поиска, предварительно выделите столбец или диапазон, в котором нужно искать, и только после этого начинайте работу. Если этого не сделать, Excel будет искать по всем имеющимся данным, что, конечно, медленнее.

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

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

Многие считают сводные таблицы слишком сложным инструментом, чтобы постоянно им пользоваться. На самом деле, не все так запутано, как кажется. Для новичков рекомендую к ознакомлению наше руководство по созданию и работе со сводными таблицами.

Для более опытных – сразу переходим к сути вопроса.

Создаем новый макет сводной таблицы. А затем в качестве строк и значений используем одно и то же поле. В нашем случае – «Товар». Поскольку название товара – это текст, то для подсчета таких значений Excel по умолчанию использует функцию СЧЕТ, то есть подсчитывает количество. А нам это и нужно. Если будет больше 1, значит, имеются дубликаты.

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

К примеру, откуда взялись 3 дубликата Sprite? Щелкаем на цифре 3, и видим такую картину:

Думаю, этот метод вполне можно использовать. Что приятно – никаких формул не требуется.

Duplicate Remover — быстрый и эффективный способ найти дубликаты в Excel

Теперь, когда вы знаете, как использовать формулы для поиска повторяющихся значений в Excel, позвольте мне продемонстрировать вам еще один быстрый, эффективный и без всяких формул способ: инструмент Duplicate Remover для Excel.

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

Как найти повторяющиеся строки в Excel за 2 быстрых шага

Сначала посмотрим в работе наиболее простой инструмент — быстрый поиск дубликатов Quick Dedupe. Используем уже знакомую нам таблицу, в которой мы выше искали дубликаты при помощи формул:

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

  1. Выберите любую ячейку в таблице и нажмите кнопку Quick Dedupe на ленте Excel. После установки пакета Ultimate Suite для Excel вы найдете её на вкладке Ablebits Data в группе Dedupe. Это наиболее простой инструмент для поиска дубликатов.

  1. Интеллектуальная надстройка возьмет всю таблицу и попросит вас указать следующие две вещи:
    • Выберите столбцы для проверки дубликатов (в данном примере это все 3 столбца – категория, товар и заказчик).
    • Выберите действие, которое нужно выполнить с дубликатами. Поскольку наша цель — выявить повторяющиеся строки, я выбрал «Выделить цветом».

Помимо выделения цветом, вам доступен ряд других опций:

  • Удалить дубликаты
  • Выбрать дубликаты
  • Указать их в столбце статуса
  • Копировать дубликаты на новый лист
  • Переместить на новый лист

Нажмите кнопку ОК и подождите несколько секунд. Готово! И никаких формул 😊.

Как вы можете видеть на скриншоте ниже, все строки с одинаковыми значениями в первых 3 столбцах были обнаружены (первые вхождения не идентифицируются как дубликаты).

Если вам нужны дополнительные возможности для работы с дубликатами и уникальными значениями, используйте мастер удаления дубликатов Duplicate Remover, который может найти дубликаты с первыми вхождениями или без них, а также уникальные значения. Подробные инструкции приведены ниже.

Мастер удаления дубликатов — больше возможностей для поиска дубликатов в Excel.

В зависимости от данных, с которыми вы работаете, вы можете не захотеть рассматривать первые экземпляры идентичных записей как дубликаты. Одно из возможных решений — использовать разные формулы для каждого сценария, как мы обсуждали в этой статье выше. Если же вы ищете быстрый, точный метод без формул, попробуйте мастер удаления дубликатов — Duplicate Remover. Несмотря на свое название, он не только умеет удалять дубликаты, но и производит с ними другие полезные действия, о чём мы далее поговорим подробнее. Также умеет находить уникальные значения.

  1. Выберите любую ячейку в таблице и нажмите кнопку Duplicate Remover на вкладке Ablebits Data

  1. Вам предложены 4 варианта проверки дубликатов в вашем листе Excel:
    • Дубликаты без первых вхождений повторяющихся записей.
    • Дубликаты с 1-м вхождением.
    • Уникальные записи.
    • Уникальные значения и 1-е повторяющиеся вхождения.

В этом примере выберем второй вариант, т.е. Дубликаты + 1-е вхождения:

  1. Теперь выберите столбцы, в которых вы хотите проверить дубликаты. Как и в предыдущем примере, мы возьмём первые 3 столбца:

  1. Наконец, выберите действие, которое вы хотите выполнить с дубликатами. Как и в случае с инструментом быстрого поиска дубликатов, мастер Duplicate Remover может идентифицировать, выбирать, выделять, удалять, копировать или перемещать повторяющиеся данные.

Поскольку цель этого примера – продемонстрировать различные способы определения дубликатов в Excel, давайте отметим параметр «Выделить цветом» (Highlight with color) и нажмите Готово.
Мастеру Duplicate Remover требуется всего лишь несколько секунд, чтобы проверить вашу таблицу и показать результат:

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

Никаких формул, никакого стресса, никаких ошибок — всегда быстрые и безупречные результаты :)

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

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

 

grooogler

Пользователь

Сообщений: 20
Регистрация: 01.01.1970

очень нужен один макрос.    

   Офис 2007 (База.xlsx)    
В ней около 12 Листов, названия листов произвольные. (в каждом листе заполнено около 1000 строк)    
В принципе задача такая — Найти повторения значений ячеек в столбцах ‘B’ всех листов.    

   Как нужно чтоб всё было — Открываем нужный лист, например List10, выделяем ячейки в столбце ‘B’. Запускаем макрос, он пробегается по всем другим листам ища совпадения в столбцах B. Если какая-то ячейка в нашем List10 в столбце B совпадает с ячейкой например в листе List20 (тоже в столбце B), то эту ячейку в List10 мы выделяем красным цветом. Всё.

 

Пробуйте  

  Sub grooogler()  
Dim sh As Worksheet  
For Each sh In Worksheets  
   If Not sh Is ActiveSheet Then  
       If Not sh.Columns(2).Find(ActiveCell, , xlValues, xlWhole) Is Nothing Then  
           ActiveCell.Interior.Color = vbRed  
           Exit Sub  
       End If  
   End If  
Next  
End Sub

 

тестирую.  
1. как я понял находит только одно совпадение и прекращает искать. а нужно все выделенные прочекать…  
2. если выделяю ячейку которая уже красная — не ищет

 

grooogler

Пользователь

Сообщений: 20
Регистрация: 01.01.1970

 

{quote}{post}тестирую.  
1. как я понял находит только одно совпадение и прекращает искать. а нужно все выделенные прочекать…{/post}{/quote}  
Прекращает искать при первом найденном совпадении. Дальше искать нет смысла — ячейка от этого краснее не станет. А ищет совпадение действительно только одной ячейки, той которая активна. Если надо по всем в выделенном диапазоне, то еще один цикл надо:  
Sub ColorRange()  
 Dim iCell As Range  
 For Each iCell In Selection.Cells  
   iCell.Select  
   grooogler  
 Next  
End Sub  

  или так, чтобы проверить все ячейки в столбце 2  
Sub ColorColumn()  
 i = 1  
 j = 2   ‘второй столбец  
 Do Until Cells(i, j) = «» ‘До первой пустой ячейки  
   Cells(i, j).Select  
   ActiveCell.Interior.Pattern = False  
   grooogler  
   i = i + 1  
 Loop  
End Sub  

  если в столбце могут быть пустые ячейки, а надо проверять и дальше — поменяйте строку  Do Until Cells(i, j) = «»  на  Do Until i=1000 ‘1000 — кол-во проверяемых строк.  

  {quote}{post}  
2. если выделяю ячейку которая уже красная — не ищет{/post}{/quote}  
Ищет, только вы не видите результата, как была красная, так и осталась.  
Чтобы снимать выделение перед поиском (вдуг дубликатов уже нет) вставьте строку ActiveCell.Interior.Pattern = False (см 2-й пример)

 

макросы привязаны к    
Ctrl-q — раскрашивание ячеек в выделенном диапазоне  
Ctrl-w — раскрашивание ячеек во 2 столбце, независимо от выделенного диапазона и активной ячейки

 

grooogler

Пользователь

Сообщений: 20
Регистрация: 01.01.1970

{quote}если в столбце могут быть пустые ячейки, а надо проверять и дальше — поменяйте строку Do Until Cells(i, j) = «» на Do Until i=1000 ‘1000 — кол-во проверяемых строк.{/quote}  
Да вроде в твоём примере и он и так находит ячейки которые идут после пустых строк  

  {quote}макросы привязаны к    
Ctrl-q — раскрашивание ячеек в выделенном диапазоне  
Ctrl-w — раскрашивание ячеек во 2 столбце, независимо от выделенного диапазона и активной ячейки{/quote}  
вот тут не понял. это к чему?  

    В принципе постестил так… вроде подходит ColorColumn. Но он чекает все ячейки открытого листа… а можно ли всё таки так, чтобы он искал только дубли для выделенных ячеек?  

  ColorRange что-то я тестю, тестю… не вижу чтобы чем-то отличался от первоначального варианта.так-же ищет дубли только для одной активной ячейки на которую щёлкал мышкой в начале выделения…  

  {quote}Чтобы снимать выделение перед поиском (вдуг дубликатов уже нет) вставьте строку ActiveCell.Interior.Pattern = False (см 2-й пример){/quote}  
да. спасибо.

 

Hugo

Пользователь

Сообщений: 23255
Регистрация: 22.12.2012

Я бы такой алгоритм применил —    
1. цикл по листам (исключая текущий)  
2. UsedRange столбца B  в массив, его в словарь. Словарь один на все листы.  
3. Работа с выделенным (если много, то в массив, если нет  — то прямо с листа можно) — сверяемся с словарём и красим.  

  Так будет быстро, т.к. переборов данных листов = количеству_листов, а не количество_выделенных_ячеек * количество_листов.

 

nerv

Пользователь

Сообщений: 3071
Регистрация: 22.12.2012

Почти тоже самое, о чем говорил Hugo  

  Sub io()  
Dim x, objSheet As Object, objRange As Object, objDict As Object  
Set objRange = Selection  
Set objDict = CreateObject(«Scripting.Dictionary»)  
For Each x In objRange.Cells  
   If x <> «» Then objDict.Item(CStr(x)) = x  
Next  
For Each objSheet In Worksheets  
   If Not objSheet Is ActiveSheet Then  
       For Each x In objSheet.Range(objRange.Address).Cells  
           If objDict.Item(CStr(x)) Then x.Interior.ColorIndex = 6  
       Next  
   End If  
Next  
End Sub  

  p.s.: выделять ТОЛЬКО ячейки

 

grooogler

Пользователь

Сообщений: 20
Регистрация: 01.01.1970

ничего не понял что писал Hugo если честно)  

  но первые варианты мне как-то больше понравились. точнее — они работают. если бы ещё на вопросы ответить которые я писал и подкорректировать что говорил…  

  >nerv  
ну, как то мягко говоря не пашит. не понятно почему, что-то находит что-то нет. а если и находит, то выделяет не повторяющуюся ячейку из тех что я выделил, а в другом месте — где нашелся дубль. я должно быть необорот) ну и собственно… что главное что собственно и не очень то пашит

 

Hugo

Пользователь

Сообщений: 23255
Регистрация: 22.12.2012

Я иначе думал — вроде в выделенном красить заказывали.  
Тогда такие варианты кода Nerv (самому писать лениво :)    
первый вариант хуже, т.к. красит столько раз, сколько листов проверяет, второй красит только один раз, как я выше описал.  
Вот только в колонки B прогоняет на всю высоту, а не только до последней занятой — это можно дополнительно пофиксить, но это не существенно — в большинстве случаев это и будет UsedRange:  

  Sub io2()  
Dim x, objSheet As Object, objRange As Object, objDict As Object, i As Long  
Set objRange = Selection  
Set objDict = CreateObject(«Scripting.Dictionary»)  
For Each x In objRange.Cells  
i = i + 1  
If x <> «» Then objDict.Item(CStr(x)) = i  
Next  
For Each objSheet In Worksheets  
If Not objSheet Is ActiveSheet Then  
For Each x In objSheet.UsedRange.Columns(2).Cells  
If objDict.Item(CStr(x)) Then objRange(objDict.Item(CStr(x))).Interior.ColorIndex = 6  
Next  
End If  
Next  
End Sub  

  Sub io3()  
Dim x, objSheet As Object, objRange As Object, objDict As Object  
Set objRange = Selection  
Set objDict = CreateObject(«Scripting.Dictionary»)  

  For Each objSheet In Worksheets  
If Not objSheet Is ActiveSheet Then  
For Each x In objSheet.UsedRange.Columns(2).Cells  
If x <> «» Then objDict.Item(CStr(x)) = x  
Next  
End If  
N

 

Hugo

Пользователь

Сообщений: 23255
Регистрация: 22.12.2012

упс, недокопипастил :)  

  Sub io3()  
Dim x, objSheet As Object, objRange As Object, objDict As Object  
Set objRange = Selection  
Set objDict = CreateObject(«Scripting.Dictionary»)  

  For Each objSheet In Worksheets  
If Not objSheet Is ActiveSheet Then  
For Each x In objSheet.UsedRange.Columns(2).Cells  
If x <> «» Then objDict.Item(CStr(x)) = x  
Next  
End If  
Next  

  For Each x In objRange.Cells  
If objDict.Item(CStr(x)) Then x.Interior.ColorIndex = 6  
Next  

  End Sub

 

Hugo

Пользователь

Сообщений: 23255
Регистрация: 22.12.2012

Проверку по словарю можно так написать — так понятнее, и вероятно правильнее:  
If objDict.exists(CStr(x)) Then x.Interior.ColorIndex = 6

 

Hugo

Пользователь

Сообщений: 23255
Регистрация: 22.12.2012

Так подшлифовал (вроде даже комментарии не нужны):  

  Sub io4()  
Dim x, objSheet As Object  

  With CreateObject(«Scripting.Dictionary»)  

  For Each objSheet In Worksheets  
If Not objSheet Is ActiveSheet Then  
For Each x In objSheet.UsedRange.Columns(2).Cells  
If CStr(x.Value) <> «» Then .Item(CStr(x.Value)) = 1  
Next  
End If  
Next  

  For Each x In Selection.Cells  
If .exists(CStr(x.Value)) Then x.Interior.ColorIndex = 3  
Next  

  End With  

  End Sub

 

nerv

Пользователь

Сообщений: 3071
Регистрация: 22.12.2012

 

nerv

Пользователь

Сообщений: 3071
Регистрация: 22.12.2012

{quote}{login=Hugo}{date=02.08.2011 12:08}{thema=}{post}Проверку по словарю можно так написать — так понятнее, и вероятно правильнее:  
If objDict.exists(CStr(x)) Then x.Interior.ColorIndex = 6{/post}{/quote}ну да)

 

Hugo

Пользователь

Сообщений: 23255
Регистрация: 22.12.2012

Такой вариант с использованием массивов.  
Работает быстро, но выделять нужно столбик (не несколько столбцов), т.к. порядок перебора массива не сопадает с порядком перебора Selection, и поэтому Selection(i) будет врать, если выделено несколько строк в нескольких столбцах.  

  Sub io5()  
Dim a, x, objSheet As Object, i&  

  With CreateObject(«Scripting.Dictionary»)  

  For Each objSheet In Worksheets  
If Not objSheet Is ActiveSheet Then  
a = objSheet.UsedRange.Columns(2).Value  
For Each x In a  
If x <> «» Then .Item(CStr(x)) = 1  
Next  
End If  
Next  

  a = Selection.Value  
For Each x In a  
i = i + 1  
If .exists(CStr(x)) Then Selection(i).Interior.ColorIndex = 3  
Next  

  End With  
End Sub

 

Hugo

Пользователь

Сообщений: 23255
Регистрация: 22.12.2012

{quote}{login=nerv}{date=02.08.2011 12:24}{thema=}{post}так?{/post}{/quote}  
Красиво, лаконично. Без словарей и массивов :)  
Только зачем перебирать остальные листы, если 11111 уже покрашено?  
Исправишь — уже не так красиво будет :)  
Кстати, как исправлять будешь? У меня есть мысль, но не скажу :)

 

Hugo

Пользователь

Сообщений: 23255
Регистрация: 22.12.2012

Ладно, покажу мысль. Думал, другой вариант посмотреть — вдруг что-то короче придумается…  
Листы перебираются всегда, но их содержимое только до тех пор, пока ячейка не покрашена:  

  Sub io()  
Dim x, i, objSheet As Object, flag As Boolean  
For Each x In Selection.Cells  
flag = True  
   For Each objSheet In Worksheets  
   If flag Then  
       If Not objSheet Is ActiveSheet Then  
           For Each i In objSheet.UsedRange.Columns(Selection.Column).Cells  
               If x = i Then x.Interior.ColorIndex = 6: flag = False: Exit For  
           Next  
       End If  
   End If  
   Next  
Next  
End Sub  

  Но на словарях/массивах конечно быстрее — там по одному перебору всех диапазонов происходит (т.е. один раз второй столбец каждого другого листа, потом один раз Selection), а тут на каждую ячейку Selection перебираются все ячейки колонки выделения всех листов, пока не будет совпадения. Т.е. если Selection например 1000 ячеек и в книге 11 листов, то переберутся столбцы выделенного столбца 10000 листов, и чем меньше будет совпадений, тем дольше процесс.

 

nerv

Пользователь

Сообщений: 3071
Регистрация: 22.12.2012

Hugo, я бы ответил раньше, но обед … ням : )  

  Привет Ассемблер, Финт ушами)  
Sub io()  
Dim x, objSheet As Object  
For Each x In Selection.Cells  
   For Each objSheet In Worksheets  
       If Not objSheet Is ActiveSheet Then  
           For Each i In objSheet.UsedRange.Columns(Selection.Column).Cells  
               If x = i Then x.Interior.ColorIndex = 6: GoTo L1  
           Next  
       End If  
   Next  
L1: Next  
End Sub

 

Hugo

Пользователь

Сообщений: 23255
Регистрация: 22.12.2012

:) я ещё не обедал :)  
Говорят, GoTo не по феншую…  
Но тут похоже на феншуй :)

 

nerv

Пользователь

Сообщений: 3071
Регистрация: 22.12.2012

Hugo: «Говорят, GoTo не по феншую…»  

  Все зависит от обстоятельств. В данном случае, те кто говорил, ошибались)

 

GIG_ant

Пользователь

Сообщений: 3102
Регистрация: 24.12.2012

{quote}{login=nerv}{date=02.08.2011 03:02}{thema=}{post}  
Все зависит от обстоятельств. В данном случае, те кто говорил, ошибались){/post}{/quote}  

  Может я ошибаюсь в предполжении, но что мешает, в вашем случае: Goto — заменить на Exit For и убрать метку L1.

 

GIG_ant

Пользователь

Сообщений: 3102
Регистрация: 24.12.2012

Не усмотрел еще одно Next, вопрос снимаю ))

 

Hugo

Пользователь

Сообщений: 23255
Регистрация: 22.12.2012

GIG_ant, так уже было — мне не понравилось :)  
А если серъёзно  — так выйдем из цикла по текущему листу. Но если ещё 99 листов не просмотрено?

 

Hugo

Пользователь

Сообщений: 23255
Регистрация: 22.12.2012

Поздно, я уже ответ написал :)

 

grooogler

Пользователь

Сообщений: 20
Регистрация: 01.01.1970

так, а давайте всё таки доделаем всё это в практическом плане а?))  

  пробую  

  Sub io()  
Dim x, i, objSheet As Object, flag As Boolean  
For Each x In Selection.Cells  
flag = True  
For Each objSheet In Worksheets  
If flag Then  
If Not objSheet Is ActiveSheet Then  
For Each i In objSheet.UsedRange.Columns(Selection.Column).Cells  
If x = i Then x.Interior.ColorIndex = 6: flag = False: Exit For  
Next  
End If  
End If  
Next  
Next  
End Sub  

  вот этот. остальные что-то не пашут.  

  1. как в этот код добавить чтобы он перед поиском — убирал Цвет ячеек с выделенных акков?  
2. чтобы дубли пустых ячеек не искал (если выделена пустая ячейка)  
3. красный цвет чтоб был ане жёлтый.

 

nilem

Пользователь

Сообщений: 837
Регистрация: 23.12.2012

Для примера:  

  Sub ioio()  
If IsEmpty(Selection) Then MsgBox «Пустая ячейка», 64: Exit Sub  
If Selection.Columns.Count > 1 Then MsgBox «Выделено более 2 столбцов», 64: Exit Sub  
Dim r As Range, i As Range, wsh As Worksheet, clmn As Long  
clmn = Selection.Column: If clmn <> 2 Then MsgBox «Выделяем только 2-й столбец», 64: Exit Sub  
ActiveSheet.Columns(clmn).Interior.Color = xlNone  
For Each wsh In Worksheets  
   If Not wsh Is ActiveSheet Then  
       For Each i In wsh.UsedRange.Columns(2).Cells  
           For Each r In Selection.Cells  
               If Len® Then If r = i Then r.Interior.Color = vbYellow  
           Next  
       Next  
   End If  
Next  
End Sub

 

Hugo

Пользователь

Сообщений: 23255
Регистрация: 22.12.2012

Как это не пашут?  
А вот этот, на словаре и массивах, проверяли?

 

grooogler

Пользователь

Сообщений: 20
Регистрация: 01.01.1970

#30

02.08.2011 23:05:02

nilem  
спасибо вроде всё как надо.  
такая только деталь… если я щёлкаю на заголовок столбца B, то соответственно выделяются все ячейки столбца… до самого низа на тысячи строк… а у меня заполнено только строки до 800-й… ну и когда я запускают поиск… макрос ищет дубли для всех этих тысяч строк… а точнее — попросту виснет.  

  можно сделать какую-нибудь проверку… примерно таким образом — если выделена пустая ячейка — то для неё дубли не ищутся (как сейчас реализовано), и мы идём дальше… но, дальше мы в таком случае идём только в том случае если далее есть не пустые выделенные ячейки.  

  вот примерно таким образом. доходим до пустой йчейки, проверяем есть ли за неё ещё что-то не пустое, и если далее всё пусто — останавливаемся

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