Как найти повторяющиеся или уникальные значения в двух столбцах на двух листах?
Может быть, сравнить два диапазона на одном листе и выяснить, что повторяющиеся или уникальные значения легко для большинства из вас, но если два диапазона находятся на двух разных листах, как вы можете быстро найти повторяющиеся и уникальные значения в этих двух диапазонах ? В этом уроке вы найдете несколько быстрых решений.
Сравните два одинаковых столбца заголовка в двух электронных таблицах с формулой в 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-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Выделение повторяющихся значений на разных листах. |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
grooogler Пользователь Сообщений: 20 |
очень нужен один макрос. Офис 2007 (База.xlsx) Как нужно чтоб всё было — Открываем нужный лист, например List10, выделяем ячейки в столбце ‘B’. Запускаем макрос, он пробегается по всем другим листам ища совпадения в столбцах B. Если какая-то ячейка в нашем List10 в столбце B совпадает с ячейкой например в листе List20 (тоже в столбце B), то эту ячейку в List10 мы выделяем красным цветом. Всё. |
Пробуйте Sub grooogler() |
|
тестирую. |
|
grooogler Пользователь Сообщений: 20 |
|
{quote}{post}тестирую. или так, чтобы проверить все ячейки в столбце 2 если в столбце могут быть пустые ячейки, а надо проверять и дальше — поменяйте строку Do Until Cells(i, j) = «» на Do Until i=1000 ‘1000 — кол-во проверяемых строк. {quote}{post} |
|
макросы привязаны к |
|
grooogler Пользователь Сообщений: 20 |
{quote}если в столбце могут быть пустые ячейки, а надо проверять и дальше — поменяйте строку Do Until Cells(i, j) = «» на Do Until i=1000 ‘1000 — кол-во проверяемых строк.{/quote} {quote}макросы привязаны к В принципе постестил так… вроде подходит ColorColumn. Но он чекает все ячейки открытого листа… а можно ли всё таки так, чтобы он искал только дубли для выделенных ячеек? ColorRange что-то я тестю, тестю… не вижу чтобы чем-то отличался от первоначального варианта.так-же ищет дубли только для одной активной ячейки на которую щёлкал мышкой в начале выделения… {quote}Чтобы снимать выделение перед поиском (вдуг дубликатов уже нет) вставьте строку ActiveCell.Interior.Pattern = False (см 2-й пример){/quote} |
Hugo Пользователь Сообщений: 23255 |
Я бы такой алгоритм применил — Так будет быстро, т.к. переборов данных листов = количеству_листов, а не количество_выделенных_ячеек * количество_листов. |
nerv Пользователь Сообщений: 3071 |
Почти тоже самое, о чем говорил Hugo Sub io() p.s.: выделять ТОЛЬКО ячейки |
grooogler Пользователь Сообщений: 20 |
ничего не понял что писал Hugo если честно) но первые варианты мне как-то больше понравились. точнее — они работают. если бы ещё на вопросы ответить которые я писал и подкорректировать что говорил… >nerv |
Hugo Пользователь Сообщений: 23255 |
Я иначе думал — вроде в выделенном красить заказывали. Sub io2() Sub io3() For Each objSheet In Worksheets |
Hugo Пользователь Сообщений: 23255 |
упс, недокопипастил Sub io3() For Each objSheet In Worksheets For Each x In objRange.Cells End Sub |
Hugo Пользователь Сообщений: 23255 |
Проверку по словарю можно так написать — так понятнее, и вероятно правильнее: |
Hugo Пользователь Сообщений: 23255 |
Так подшлифовал (вроде даже комментарии не нужны): Sub io4() With CreateObject(«Scripting.Dictionary») For Each objSheet In Worksheets For Each x In Selection.Cells End With End Sub |
nerv Пользователь Сообщений: 3071 |
|
nerv Пользователь Сообщений: 3071 |
{quote}{login=Hugo}{date=02.08.2011 12:08}{thema=}{post}Проверку по словарю можно так написать — так понятнее, и вероятно правильнее: |
Hugo Пользователь Сообщений: 23255 |
Такой вариант с использованием массивов. Sub io5() With CreateObject(«Scripting.Dictionary») For Each objSheet In Worksheets a = Selection.Value End With |
Hugo Пользователь Сообщений: 23255 |
{quote}{login=nerv}{date=02.08.2011 12:24}{thema=}{post}так?{/post}{/quote} |
Hugo Пользователь Сообщений: 23255 |
Ладно, покажу мысль. Думал, другой вариант посмотреть — вдруг что-то короче придумается… Sub io() Но на словарях/массивах конечно быстрее — там по одному перебору всех диапазонов происходит (т.е. один раз второй столбец каждого другого листа, потом один раз Selection), а тут на каждую ячейку Selection перебираются все ячейки колонки выделения всех листов, пока не будет совпадения. Т.е. если Selection например 1000 ячеек и в книге 11 листов, то переберутся столбцы выделенного столбца 10000 листов, и чем меньше будет совпадений, тем дольше процесс. |
nerv Пользователь Сообщений: 3071 |
Hugo, я бы ответил раньше, но обед … ням : ) Привет Ассемблер, Финт ушами) |
Hugo Пользователь Сообщений: 23255 |
я ещё не обедал |
nerv Пользователь Сообщений: 3071 |
Hugo: «Говорят, GoTo не по феншую…» Все зависит от обстоятельств. В данном случае, те кто говорил, ошибались) |
GIG_ant Пользователь Сообщений: 3102 |
{quote}{login=nerv}{date=02.08.2011 03:02}{thema=}{post} Может я ошибаюсь в предполжении, но что мешает, в вашем случае: Goto — заменить на Exit For и убрать метку L1. |
GIG_ant Пользователь Сообщений: 3102 |
Не усмотрел еще одно Next, вопрос снимаю )) |
Hugo Пользователь Сообщений: 23255 |
GIG_ant, так уже было — мне не понравилось |
Hugo Пользователь Сообщений: 23255 |
Поздно, я уже ответ написал |
grooogler Пользователь Сообщений: 20 |
так, а давайте всё таки доделаем всё это в практическом плане а?)) пробую Sub io() вот этот. остальные что-то не пашут. 1. как в этот код добавить чтобы он перед поиском — убирал Цвет ячеек с выделенных акков? |
nilem Пользователь Сообщений: 837 |
Для примера: Sub ioio() |
Hugo Пользователь Сообщений: 23255 |
Как это не пашут? |
grooogler Пользователь Сообщений: 20 |
#30 02.08.2011 23:05:02 nilem можно сделать какую-нибудь проверку… примерно таким образом — если выделена пустая ячейка — то для неё дубли не ищутся (как сейчас реализовано), и мы идём дальше… но, дальше мы в таком случае идём только в том случае если далее есть не пустые выделенные ячейки. вот примерно таким образом. доходим до пустой йчейки, проверяем есть ли за неё ещё что-то не пустое, и если далее всё пусто — останавливаемся |
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.
Множество листов в одном доке. Первый столбец у всех одинаковый (например, название). У меня есть макрос, который выделяет на одном листе повторяющиеся значения РАЗНЫМ цветом. Хотелось бы, чтобы и на других тоже выделялось ТЕМ ЖЕ цветом, что и на первом. Как реализовать?
Sub DuplicatesColoring()
Dim Dupes() 'объявляем массив для хранения дубликатов
ReDim Dupes(1 To Selection.Cells.Count, 1 To 2)
Selection.Interior.ColorIndex = -4142 'убираем заливку если была
i = 3
For Each cell In Selection
If WorksheetFunction.CountIf(Selection, cell.Value) > 1 Then
For k = LBound(Dupes) To UBound(Dupes)
'если ячейка уже есть в массиве дубликатов - заливаем
If Dupes(k, 1) = cell Then cell.Interior.ColorIndex = Dupes(k, 2)
Next k
'если ячейка содержит дубликат, но еще не в массиве - добавляем ее в массив и заливаем
If cell.Interior.ColorIndex = -4142 Then
cell.Interior.ColorIndex = i
Dupes(i, 1) = cell.Value
Dupes(i, 2) = i
i = i + 1
End If
End If
Next cell
End Sub