Поиск одинаковых значений в excel vba

Поиск повторяющихся значений (дубликатов) в одном из столбцов таблицы 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 Желтый

 

mtts54

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

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

Добрый день, уважаемые форумчане! В поиске есть аналогичные темы, но подходящего мне я не нашел. Суть проблемы: есть табличка ~200 тыс. строк на 60 столбцов. В столбце G — некий идентификатор id, он может быть уникальным, а может повторяться. Буду благодарен за помощь с помощью VBA найти и вырезать из данной таблицы строки с повторяющимися id и перенести их на другой лист.

Excel непознаваем как атом.

 

Возможно я не правильно понял задачу…. Но самый простой вариант
Выделяем столбец G, на вкладке Главная — выбираем условное форматирование —> Правила выделения ячеек —> Повторяющиеся значения (что бы все повторяющиеся ID подсвечивались)
Далее устанавливаем в столбце G фильтр —> Фильтр по цвету —> выбираем цвет повторения (красный по умолчанию).
Автоматом получили все повторяющиеся ID отфильтрованные, теперь мы просто их копируем и вставляем на другой лист.
Прошу простить, если не правильно понял задачу=)

 

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

https://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=1&TID=47173

 

Jack Famous

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

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

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

mtts54, здравствуйте!
Не совсем понятно, как переносить… Просто все дубли, как описал Михаил Комиссаров? Уточните в файле примере конечный результат…

Изменено: Jack Famous15.08.2018 11:14:43

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

TheBestOfTheBest

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

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

Excel 2010 +PLEX +SaveToDB +PowerQuery

С помощью доп.столбца. Файл положить в папку С:1, на таблице ПКМ-обновить.

Неизлечимых болезней нет, есть неизлечимые люди.

 

mtts54

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

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

Михаил Комиссаров

, автофильтр «видит» только 10 тыс. строк, поэтому этот прием не годится.

Jack Famous

, конечный результат в файле-примере таков: на Листе1 строк с подсвеченными id не должно быть — они должны появиться на другом, вставленном листе. В реальном файле из-за большого количества строк УФ неприменимо.

Excel непознаваем как атом.

 

mtts54

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

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

TheBestOfTheBest

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

Excel непознаваем как атом.

 

Jack Famous

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

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

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#8

15.08.2018 13:19:11

mtts54, пробуйте

Код на массивах

UPD (15:05):

14я строка кода Set rng = Cells(1, col).Resize(r+ 1, 1) исправлена на Set rng = Cells(2, col).Resize(r, 1). Файл заменён.

Прикрепленные файлы

  • Поиск повторов.xlsm (63.08 КБ)

Изменено: Jack Famous15.08.2018 15:07:53

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Ігор Гончаренко

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

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

#9

15.08.2018 14:30:52

выполните этот макрос

Код
Sub RemoveDouble2NewSheet()
  Dim rg As Range: Set rg = Range(Cells(2, 7), Cells(Rows.Count, 7).End(xlUp))
  rg.Offset(0, 9).FormulaR1C1 = "=if(countif(r2c7:r" & rg.Rows.Count + 1 & "c7, rc7)>1,2,"""")"
  rg.Offset(0, 9).Value = rg.Offset(0, 9).Value
  Set rg = rg.Offset(0, 9).SpecialCells(xlCellTypeConstants, 1).EntireRow: Columns(16).Clear
  rg.Copy Worksheets.Add.Cells(1, 1):  rg.Delete: Columns(16).Clear
End Sub

при активном листе с данными

Изменено: Ігор Гончаренко15.08.2018 14:34:29

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

TheBestOfTheBest

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

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

Excel 2010 +PLEX +SaveToDB +PowerQuery

#10

15.08.2018 14:39:42

Цитата
mtts54 написал:
Честно говоря, я не понял, каким приемом Вы решили задачу. Спасибо за ответ.

Внешний запрос (Данные-Получение внешних данных…). Измените формулу в столбце Ключ =СЧЁТЕСЛИ($G$2:$G$348;G2), обновите таблицы как указано выше.

Изменено: TheBestOfTheBest15.08.2018 14:40:31

Неизлечимых болезней нет, есть неизлечимые люди.

 

кузя1972

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

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

#11

15.08.2018 16:37:15

вариант макроса(не нашел как надо в исходном файл -примере),кнопки unic и очистка,лист1 добавлен вручную

Код
Sub unic()
     Dim i&, m&, j&, z, z1: z = Range("A2:O" & Range("A" & Rows.Count).End(xlUp).Row).Value
     ReDim z1(1 To UBound(z), 1 To UBound(z, 2))
 With CreateObject("scripting.dictionary"): .CompareMode = 1
 For i = 1 To UBound(z): .Item(z(i, 7)) = .Item(z(i, 7)) + 1: Next
 For i = 1 To UBound(z)
 If .Item(z(i, 7)) > 1 Then
   m = m + 1: For j = 1 To UBound(z, 2): z1(m, j) = z(i, j): Next
 End If
 Next
 Sheets("Лист1").Range("A1").Resize(m, UBound(z1, 2)).Value = z1
End With
End Sub

Прикрепленные файлы

  • example_16_08_2018_pl_повторы.xls (146.5 КБ)

Изменено: кузя197215.08.2018 16:37:30

 

mtts54

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

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

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

Excel непознаваем как атом.

 

Jack Famous

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

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

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

mtts54, мы ждём (ну я точно жду фидбэк)  :D

Изменено: Jack Famous16.08.2018 10:15:51

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Nordheim

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

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

#14

16.08.2018 10:51:18

Вариант на массивах и словарях

Скрытый текст

«Все гениальное просто, а все простое гениально!!!»

 

mtts54

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

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

Добрый день! Протестировал макрос от

Ігор Гончаренко

на реальном файле размером 31 колонка на 153 тыс.строк. В макросе в выражениях Offset(0, 9) заменил 9 на 25 и в Columns(16)  заменил 16 на 32. Макрос работал ок. 10 минут, нашел все 7696 повторов. Хотелось бы побыстрее, но… размер имеет значение. Спасибо! Остальные решения протестирую завтра.

Excel непознаваем как атом.

 

mtts54

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

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

Попробовал на том же реальном файле макрос от

Jack Famous

. К сожалению, макрос где-то зациклился и после 20 минут ожидания я был вынужден остановить его выполнение :(  

Excel непознаваем как атом.

 

Jack Famous

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

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

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#17

17.08.2018 11:45:00

mtts54, немного изменил принцип удаления строк из исходника — пробуйте

КОД

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

mtts54

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

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

На том же реальном файле макрос

Nordheim

за 2 секунды нашел все повторы, вставил лист и скопировал повторы туда (правда, пару раз VBA ругнулся: не была объявлена переменная sht1 — это я поправил).  Но с исходного листа макрос повторы не удалил  :( . Тут я ничего поделать не смог  :cry:  . Очень надеюсь, что уважаемый  

Nordheim

 прочтет этот пост и подправит код :oops:  

Excel непознаваем как атом.

 

Jack Famous

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

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

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

mtts54, вы бы выложили ссылку на файл реального объёма, но без конфиденциальных данных — тестить проще было бы

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Nordheim

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

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

#20

17.08.2018 12:27:31

В данном коде есть нюанс, таблица должна начинаться со второй строки, шапка таблицы на первой

Код
Option Explicit

 
Sub test()
'   ----------------------------------------------
    Dim dic As Object, ikey, rng As Range
    Dim i&, arr(), txt$, j%, x&, sht As Worksheet
'   ----------------------------------------------
    Application.DisplayAlerts = False
    Set dic = CreateObject("Scripting.Dictionary")
    On Error Resume Next
    Set sht = ThisWorkbook.Worksheets("Дубли")
    If Not sht Is Nothing Then sht.Delete
    On Error GoTo 0
    arr = sht1.UsedRange.Value
    For i = 2 To UBound(arr)
        txt = arr(i, 7)
        dic.Item(txt) = dic.Item(txt) + 1
    Next i
    For Each ikey In dic.Keys
        If dic.Item(ikey) = 1 Then dic.Remove (ikey)
    Next ikey
    x = 1
    For i = 1 To UBound(arr)
        txt = arr(i, 7)
        If dic.Exists(txt) Then
            If rng Is Nothing Then Set rng = sht1.Rows(i) Else Set rng = Union(rng, sht1.Rows(i))
            x = x + 1
            For j = 1 To UBound(arr, 2)
                arr(x, j) = arr(i, j)
            Next j
        End If
    Next i
    Set sht = ThisWorkbook.Worksheets.Add(after:=sht1)
    With sht
        .[a1].Resize(x, UBound(arr, 2)) = arr
        .Name = "Дубли"
        .Columns.AutoFit
    End With
    If Not rng Is Nothing Then rng.Delete
    Application.DisplayAlerts = True
End Sub

«Все гениальное просто, а все простое гениально!!!»

 

Kuzmich

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

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

#21

17.08.2018 12:36:19

Nordheim,  
Определите sht1    

Код
  Set sht1 = ThisWorkbook.Worksheets("Пример на форум")

при формировании листа Дубли я бы добавил первой строку

Код
.Range("K2:K" & x).NumberFormat = "@"

Изменено: Kuzmich17.08.2018 12:48:30

 

mtts54

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

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

Excel непознаваем как атом.

 

kryptonets

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

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

Я вижу,что нужен макрос. Но предложу другое решение. Надстройка PowerQuery. Выделить таблицу Ctrl+T, с заголовками.PowerQuery—>Из таблицы,диапазона.Главная—>Сохранять строки—>Сохранять дубликаты.Выгрузить.Готово)

 

Nordheim

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

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

#24

17.08.2018 13:03:43

Цитата
Kuzmich написал:
Определите sht1

sht1 в файле это название листа в VBAProject, поэтому лист не объявлен, на кириллице неудобно было писать, поэтому переименовал по ходу написания кода

«Все гениальное просто, а все простое гениально!!!»

 

Nordheim

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

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

#25

17.08.2018 13:05:09

Цитата
Kuzmich написал:
при формировании листа Дубли я бы добавил первой строку

С какой целью?

«Все гениальное просто, а все простое гениально!!!»

 

mtts54

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

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

Nordheim

,  макрос (с учетом от

Kuzmich

) отработал немного дольше (это абсолютно не критично), повторы с исходного листа удалил. Спасибо!

kryptonets

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

Excel непознаваем как атом.

 

Kuzmich

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

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

#27

17.08.2018 13:17:04

Nordheim, написал

Цитата
С какой целью?

Просто на листе Дубли в столбце К появляются ячейки с янв.92 вместо 1-92

Изменено: Kuzmich17.08.2018 13:17:18

 

Nordheim

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

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

#28

17.08.2018 13:18:40

Цитата
Kuzmich написал:
Просто на листе Дули в столбце К появляются ячейки с янв.92 вместо 1-92

А строка зачем?

«Все гениальное просто, а все простое гениально!!!»

 

Kuzmich

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

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

#29

17.08.2018 13:22:51

Я имел в виду этот кусок макроса

Код
    With sht
        .Range("K2:K" & x).NumberFormat = "@"
        .[a1].Resize(x, UBound(arr, 2)) = arr
        .Name = "Дубли"
        .Columns.AutoFit
    End With

Чтобы не было преобразования в дату

 

Nordheim

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

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

#30

17.08.2018 13:23:27

Наверно так более правильно.

Код
Sub test()
'   ----------------------------------------------
    Dim dic As Object, ikey, rng As Range, sht1 As Worksheet
    Dim i&, arr(), txt$, j%, x&, sht As Worksheet
'   ----------------------------------------------
    Application.DisplayAlerts = False
    Set dic = CreateObject("Scripting.Dictionary")
    On Error Resume Next
    Set sht = ThisWorkbook.Worksheets("Дубли")
    If Not sht Is Nothing Then sht.Delete
    On Error GoTo 0
    Set sht1 = Worksheets("имя листа")
    arr = sht1.UsedRange.Value
    For i = 2 To UBound(arr)
        txt = arr(i, 7)
        dic.Item(txt) = dic.Item(txt) + 1
    Next i
    For Each ikey In dic.Keys
        If dic.Item(ikey) = 1 Then dic.Remove (ikey)
    Next ikey
    x = 1
    For i = 1 To UBound(arr)
        txt = arr(i, 7)
        If dic.Exists(txt) Then
            If rng Is Nothing Then Set rng = sht1.Rows(i) Else Set rng = Union(rng, sht1.Rows(i))
            x = x + 1
            For j = 1 To UBound(arr, 2)
                arr(x, j) = arr(i, j)
            Next j
        End If
    Next i
    Set sht = ThisWorkbook.Worksheets.Add(after:=sht1)
    With sht
       .Range("K2:K" & x).NumberFormat = "@"
       .[a1].Resize(x, UBound(arr, 2)).Value = arr
        End With
        .Name = "Дубли"
        .Columns.AutoFit
    End With
    If Not rng Is Nothing Then rng.Delete
    Application.DisplayAlerts = True
End Sub

Изменено: Nordheim17.08.2018 13:25:52

«Все гениальное просто, а все простое гениально!!!»

Доброго времени суток, уважаемые форумчане!

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

Имеется таблица, с данным, в ячейках A1-An хранятся разные имена, некоторые из них повторяются. Подскажите пожалуйста, каким образом можно организовать подсчет каждого повторяющегося имени в таблице?
Тоесть сколько раз повторилось каждое имя.

Заранее спасибо за ответ.

8 ответов

13K

12 января 2007 года

Ser Artur

5 / / 06.10.2005

=COUNTIF(A1:A6,»Artur»)

405

12 января 2007 года

Dmitrii

554 / / 16.12.2004

Имеется таблица, с данным, в ячейках A1-An хранятся разные имена, некоторые из них повторяются. Подскажите пожалуйста, каким образом можно организовать подсчет каждого повторяющегося имени в таблице?
Тоесть сколько раз повторилось каждое имя.

Если инструментом решения должен служить макрос, а не функции рабочего листа, то алгоритм может быть таким:
— заводим массив для регистрации уникальных вариантов имён и массив счётчиков для них;
— организуем цикл по заданному диапазону ячеек для перебора всех значений;
— для каждого значения выполняем проверку наличия его в массиве уникальных имён (опять же в цикле); если проверяемое имя уже встречается в массиве, то увеличиваем значение соответствующего счётчика, если — не встречается, то добавляем его в массив и создаём очередной счётчик;
— нужным образом организуем вывод результатов (в окно сообщений, в файл, на лист и т.п.).

Если задача не учебная, то рекомендую использовать возможности объекта Dictionary из состава WSH. Вот пример:

Код:

Sub Example()
Dim dictNames As Object, arrKeys
Dim curCell As Range, curName As String
Set dictNames = CreateObject(«Scripting.Dictionary»)
dictNames.CompareMode = 1
For Each curCell In Range(«a1:a6»)
    curName = curCell.Value
    If dictNames.Exists(curName) Then
        dictNames.Item(curName) = dictNames.Item(curName) + 1
    Else
        dictNames.Add curName, 1
    End If
Next curCell
arrKeys = dictNames.Keys
For i = 0 To dictNames.Count — 1
    MsgBox arrKeys(i) & «: » & dictNames.Item(arrKeys(i))
Next
End Sub

267

12 января 2007 года

Cutty Sark

1.2K / / 17.10.2002

Доброго времени суток, уважаемые форумчане!

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

Имеется таблица, с данным, в ячейках A1-An хранятся разные имена, некоторые из них повторяются. Подскажите пожалуйста, каким образом можно организовать подсчет каждого повторяющегося имени в таблице?
Тоесть сколько раз повторилось каждое имя.

Заранее спасибо за ответ.

Прекрасным средством для этого (и для много другого) является Сводная таблица (Pivot Table). Объяснения нужны?

2.1K

12 января 2007 года

Ariman

102 / / 20.10.2005

Pivot Table

Можно по подробней в общих чертах, если вас не затруднит?

По-поводу WSH, насколько я понимаю, это не ходит в состав Excel, все нужно реализовать в макросе.

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

267

13 января 2007 года

Cutty Sark

1.2K / / 17.10.2002

Так тебе обязательно это делать макросом? Макрос-то здесь необязателен. Можно с ним, можно без него…

И ещё скажи, какая у тебя версия Экселя, я имею в виду год и язык, чтобы мне не дублировать объяснения.

2.1K

13 января 2007 года

Ariman

102 / / 20.10.2005

Нужно макросом… 2003 офис, англ.вер

Объясните плз как на коде будет выглядеть, а то я никак не могу понять этот алгоритм.

405

16 января 2007 года

Dmitrii

554 / / 16.12.2004

Объясните плз как на коде будет выглядеть, а то я никак не могу понять этот алгоритм.

Вот один из вариантов:

Код:

Sub Example()
Dim curCell As Range
Dim arrNames() As String, arrNumNames() As Long
Dim resFind As Boolean
Dim curName As String
ReDim arrNames(1 To 1)
ReDim arrNumNames(1 To 1)
arrNames(1) = Range(«a1»).Value
arrNumNames(1) = 1
For Each curCell In Range(«a2:a6»)
    curName = curCell.Value
    i = LBound(arrNames)
    Do
        If StrComp(curName, arrNames(i), vbTextCompare) = 0 Then
            arrNumNames(i) = arrNumNames(i) + 1
            resFind = True
        Else
            i = i + 1
        End If
    Loop While resFind = False And i <= UBound(arrNames)
    If resFind = False Then
        ReDim Preserve arrNames(1 To i)
        ReDim Preserve arrNumNames(1 To i)
        arrNames(i) = curName
        arrNumNames(i) = 1
    Else
        resFind = False
    End If
Next curCell
For i = LBound(arrNames) To UBound(arrNames)
    MsgBox arrNames(i) & «: » & arrNumNames(i)
Next i
End Sub

2.1K

17 января 2007 года

Ariman

102 / / 20.10.2005

Спасибо громное,щас будем пробовать.

Содержание

  1. Поиск дублей в Excel
  2. Как макрос работает
  3. Код макроса
  4. Как этот код работает
  5. Как использовать
  6. VBA:поиск одинаковых данных в ячеках
  7. 8 ответов
  8. VBA Excel. Удаление повторяющихся значений в диапазоне ячеек
  9. Метод Range.RemoveDuplicates
  10. Синтаксис метода Range.RemoveDuplicates
  11. Параметры метода Range.RemoveDuplicates
  12. Примеры удаления дубликатов
  13. Vba excel поиск повторяющихся значений
  14. Vba excel поиск повторяющихся значений
  15. Поиск, выделение, фильтрация, подсчет, удаление дубликатов в Excel
  16. 2.1 Фильтрация дубликатов с условным форматированием

Поиск дублей в Excel

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

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

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

Код макроса

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

  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. Введите или вставьте код.

Источник

VBA:поиск одинаковых данных в ячеках

Доброго времени суток, уважаемые форумчане!

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

Имеется таблица, с данным, в ячейках A1-An хранятся разные имена, некоторые из них повторяются. Подскажите пожалуйста, каким образом можно организовать подсчет каждого повторяющегося имени в таблице?
Тоесть сколько раз повторилось каждое имя.

Заранее спасибо за ответ.

8 ответов

Если инструментом решения должен служить макрос, а не функции рабочего листа, то алгоритм может быть таким:
— заводим массив для регистрации уникальных вариантов имён и массив счётчиков для них;
— организуем цикл по заданному диапазону ячеек для перебора всех значений;
— для каждого значения выполняем проверку наличия его в массиве уникальных имён (опять же в цикле); если проверяемое имя уже встречается в массиве, то увеличиваем значение соответствующего счётчика, если — не встречается, то добавляем его в массив и создаём очередной счётчик;
— нужным образом организуем вывод результатов (в окно сообщений, в файл, на лист и т.п.).

Если задача не учебная, то рекомендую использовать возможности объекта Dictionary из состава WSH. Вот пример:

Источник

VBA Excel. Удаление повторяющихся значений в диапазоне ячеек

Удаление повторяющихся значений (дубликатов) в диапазоне ячеек с помощью кода VBA Excel. Метод Range.RemoveDuplicates — синтаксис, параметры, примеры.

Метод Range.RemoveDuplicates

Метод Range.RemoveDuplicates предназначен в VBA Excel для удаления повторяющихся значений по столбцам в заданном диапазоне ячеек рабочего листа. Строки с обнаруженными дубликатами удаляются целиком.

Синтаксис метода Range.RemoveDuplicates

expression. RemoveDuplicates (Columns , Header) ,

где expression — переменная или выражение, возвращающее объект Range.

Параметры метода Range.RemoveDuplicates

Наименование Описание
Columns Массив индексов столбцов, содержащих ячейки с повторяющимися значениями. Обязательный параметр. Тип данных – Variant.
Header Указывает, содержит ли первая строка диапазона заголовок, который не участвует в поиске дубликатов:

  • xlNo — первая строка списка не содержит заголовок (значение по умолчанию);
  • xlYes — первая строка диапазона содержит заголовок;
  • xlGuess — VBA Excel решает сам, есть ли у списка заголовок.

Необязательный параметр. Тип данных – XlYesNoGuess.

Метод работает как с круглыми скобками, в которые заключены параметры, так и без них. Если требуется указать несколько столбцов в параметре Columns, следует использовать функцию Array, например, Array(2, 3).

Примеры удаления дубликатов

Исходная таблица для всех примеров

По третьей колонке легко определить, какие строки были удалены.

Пример 1
Удаление повторяющихся значений по первому столбцу:

Range(«A1:C10»).RemoveDuplicates 1

Range(Cells(1, 1), Cells(10, 3)).RemoveDuplicates (1)

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

Пример 2
Удаление дубликатов по первому столбцу с указанием, что первая строка содержит заголовок:

Range(«A1:C10»).RemoveDuplicates 1, xlYes

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

Пример 3
Удаление дубликатов по первому и второму столбцам:

Range(«A1:C10»).RemoveDuplicates Array(1, 2)

Обратите внимание, что при удалении повторяющихся значений по нескольким столбцам, будут удалены дубли только тех строк, в которых во всех указанных столбцах содержатся одинаковые значения. В третьем примере удалены «лишние» строки с дублями значений по двум первым столбцам: Корова+Лягушка, Свинья+Бурундук и Овца+Собака.

Смотрите, как отобрать уникальные значения из списка в VBA Excel с помощью объекта Collection и объекта Dictionary.

Источник

Vba excel поиск повторяющихся значений

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

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

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

Прикрепите к сообщению пример файла (можно не весь, но столбцы с улицами и домами должны присутствовать)

А 20 000 строк — это не так уж и много.
Или у Вас комп очень медленный?

комп вроде нормальный: два ядра по три гигагерца.

база во вложении
а также моя версия макроса))

Вложения

условие if cell.Interior.ColorIndex <> 3 then тело второго цикла.

В этом случае будут пропускаться ячейки окашенные в красный цвет.
А насколько повыситься быстродействие суди сам

думаю что проверка цвета почти ничего не даст..

вот щас подумал функцию getTrimCell2 надо переписать.

зачем каждый раз делать конкатенацию
Trim(Range(adr).Value) & Trim(Range(adr).Offset(0, 1).Value)

надо просто отдельно сравнивать парами
street1 = street2 and number1 = number2

только вот в процессе реализации возникает сообщение такое
«недостаточно системных ресурсов для отображения диалогового окна»
и как его вылечить ?

у меня офис 2007 rus крякнутый

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

думаю что проверка цвета почти ничего не даст..

вот щас подумал функцию getTrimCell2 надо переписать.

зачем каждый раз делать конкатенацию
Trim(Range(adr).Value) & Trim(Range(adr).Offset(0, 1).Value)

надо просто отдельно сравнивать парами
street1 = street2 and number1 = number2

При проверке цвета лишний раз не будет срабатывать второй цикл (повторного поиска одинаковых значений). Если цвет будет совпадать с красным незачем повторно искать эти же значения. Поиск уже осуществлен.
И подумай вот о чем, если первое из повторенных значений находиться ну скажем в первой сотни — цикл будет крутиться более 19900 что займет достаточно времени. Чем не сокращение времени поиска повторений

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

Такие темы встречались уже множество раз.

Немного переделал макрос из этой темы.

Вот что получилось. (см. вложение)

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

Мой макрос обрабатывает данные далеко не самым эффективным образом (перебором строк).
Но формирование выборки уникальных адресов происходит за несколько секунд (создаётся новый лист с выборкой).

При желании можно уменьшить время обработки до 1 секунды (если сразу считывать все адреса в массив, обрабатывать массив, а потом записывать массив на новый лист)

Можно удалять также пустые и полупустые строки (если Вы сформулируете требования к удаляемым строкам)

Источник

Vba excel поиск повторяющихся значений

  • 1. Найдите и выделите дубликаты
    • 1.1 Найдите дубликаты с формулой
      • 1.1.1 Повторяющиеся ячейки в одном столбце
      • 1.1.2 Повторяющиеся ячейки в двух столбцах
      • 1.1.3 Повторяющиеся ячейки с учетом регистра
    • 1.2 Выделение дубликатов условным форматированием
      • 1.2.1 Повторяющиеся ячейки
      • 1.2.2 Строки на основе повторяющихся ячеек
      • 1.2.3 Повторяющиеся строки
      • 1.2.4 Повторяющиеся ячейки, кроме 1-го экземпляра
    • 1.3 Выделите дубликаты разными цветами
    • 1.4 Выделите дубликаты сторонними надстройками
      • 1.4.1 Повторяющиеся ячейки в одном столбце
      • 1.4.2 Дублирование ячеек в двух столбцах / листах
  • 2. Отфильтровать дубликаты
    • 2.1 По условному форматированию
    • 2.2 Вспомогательной колонкой
  • 3. Подсчитайте дубликаты
    • 3.1 Подсчитайте повторяющиеся значения с критериями
      • 3.1.1 Дубликаты с учетом регистра с критериями
      • 3.1.2 Дубликаты с несколькими критериями
    • 3.2 Подсчитайте общее количество дубликатов в одном столбце
      • 3.2.1 Исключение 1-го вхождения
      • 3.2.2 Включая 1-е вхождение
    • 3.3 Считайте дубликаты в двух столбцах
      • 3.3.1 По формуле
      • 3.3.2 Сторонней надстройкой
    • 3.4 Считайте дубликаты только один раз
      • 3.4.1 Подсчитайте каждое повторяющееся значение один раз
      • 3.4.2 Один раз подсчитать повторяющееся значение с учетом регистра
      • 3.4.3 Подсчитайте каждое повторяющееся значение один раз с помощью удивительных инструментов
    • 3.5 Подсчитайте каждое повторяющееся значение в одном столбце
      • 3.5.1 По функции ПРОМЕЖУТОЧНЫЙ ИТОГ
      • 3.5.2 По сводной таблице
      • 3.5.3 Замечательным инструментом
    • 3.6 Считайте дубликаты по порядку
  • 4. Удалить дубликаты
    • 4.1 Удалить дубликаты, кроме одного в столбце
      • 4.1.1 Функция удаления дубликатов
      • 4.1.2 Функция расширенного фильтра
      • 4.1.3 По VBA
    • 4.2 Удалить дубликаты и оригинал
      • 4.2.1 По условному форматированию
      • 4.2.2 По вспомогательной колонке
      • 4.2.3 Замечательным инструментом
    • 4.3 Удалить строки на основе дубликатов
    • 4.4 Удалить дубликаты в двух столбцах
      • 4.4.1 По вспомогательной колонке
      • 4.4.2 Замечательным инструментом

Поиск, выделение, фильтрация, подсчет, удаление дубликатов в Excel

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

  • 1. Найдите и выделите дубликаты
    • 1.1 Найдите дубликаты с формулой
      • 1.1.1 Найдите повторяющиеся ячейки в одном столбце с помощью формулы
      • 1.1.2 Найдите повторяющиеся ячейки в двух столбцах с помощью формулы
      • 1.1.3 Поиск повторяющихся ячеек с учетом регистра с помощью формулы
    • 1.2 Находите и выделяйте дубликаты с условным форматированием
      • 1.2.1 Поиск и выделение повторяющихся ячеек с условным форматированием
      • 1.2.2 Поиск и выделение строк на основе повторяющихся ячеек
      • 1.2.3 Найдите и выделите повторяющиеся строки с условным форматированием
      • 1.2.4 Найдите и выделите дубликаты, кроме первых экземпляров
    • 1.3 Находите и выделяйте дубликаты разными цветами
    • 1.4 Находите и выделяйте дубликаты с помощью сторонней надстройки
      • 1.4.1 Найдите и выделите повторяющиеся ячейки в одном столбце
      • 1.4.2 Найдите и выделите повторяющиеся ячейки в двух столбцах или листах
  • 2. Отфильтровать дубликаты
    • 2.1 Отфильтровать дубликаты с условным форматированием
    • 2.2 Отфильтруйте дубликаты с помощью вспомогательного столбца
  • 3. Подсчитайте дубликаты
    • 3.1 Подсчитайте повторяющиеся значения с критериями
      • 3.1.1 Подсчет дубликатов с учетом регистра с помощью критериев
      • 3.1.2 Подсчет дубликатов по нескольким критериям
    • 3.2 Подсчитайте общее количество дубликатов в одном столбце
      • 3.2.1 Подсчет дубликатов в столбце, исключая первое вхождение
      • 3.2.2 Подсчет дубликатов в столбце, включая первое вхождение
      • 3.2.3 Подсчет дубликатов в столбце, включая / исключая первые вхождения
    • 3.3 Считайте дубликаты в двух столбцах
      • 3.3.1 Подсчет дубликатов между двумя столбцами с помощью формулы
      • 3.3.2 Подсчет дубликатов между двумя столбцами с помощью сторонней надстройки
    • 3.4 Считайте дубликаты только один раз
      • 3.4.1 Подсчитайте каждое повторяющееся значение один раз с помощью формулы
      • 3.4.2 Один раз подсчитать повторяющееся значение с учетом регистра с помощью формулы массива
      • 3.4.3 Подсчитайте каждое повторяющееся значение один раз с помощью сторонней надстройки
    • 3.5 Подсчитайте каждое повторяющееся значение в одном столбце
      • 3.5.1 Подсчитайте каждое повторяющееся значение в одном столбце с помощью функции ПРОМЕЖУТОЧНЫЙ ИТОГ
      • 3.5.2 Подсчитайте каждое повторяющееся значение в одном столбце с помощью сводной таблицы
      • 3.5.3 Подсчитайте каждое повторяющееся значение в одном столбце с помощью замечательного инструмента
    • 3.6 Считайте дубликаты по порядку
  • 4. Удалить дубликаты
    • 4.1 Удалить дубликаты, кроме одного в столбце
      • 4.1.1 Удаление дубликатов, кроме одного, с функцией удаления дубликатов
      • 4.1.2 Удаление дубликатов, кроме одного с функцией расширенного фильтра
      • 4.1.3 Удалить дубликаты, кроме одного, с VBA
    • 4.2 Удалить дубликаты и оригинал
      • 4.2.1 Удаление всех дубликатов и исходных значений с помощью условного форматирования
      • 4.2.2 Удалите все дубликаты и исходные значения с помощью вспомогательного столбца
      • 4.2.3 Удалите все дубликаты и исходные значения с помощью замечательного инструмента
    • 4.3 Удалить строки на основе дубликатов в одном столбце
    • 4.4 Удалить дубликаты в двух столбцах
      • 4.4.1 Удалить дубликаты в двух столбцах с помощью вспомогательного столбца
      • 4.4.2 Удалите дубликаты в двух столбцах с помощью замечательного инструмента

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

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

1.1.1 Найдите повторяющиеся ячейки в одном столбце с помощью формулы

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

2. Введите формулу = СЧЁТЕСЛИ ($ C $ 3: $ C $ 12; C3)> 1, и нажмите Enter .

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

Ноты: В формуле = СЧЁТЕСЛИ ($ C $ 3: $ C $ 12, C3)> 1,
(1) 3 канадских доллара: 12 канадских долларов — это столбец или список, в котором вы найдете повторяющиеся значения. Поскольку столбец статичен, когда мы копируем формулу в другие ячейки, обычно это абсолютная ссылка со знаком «$».
(2) C3 — первая ячейка указанного столбца. Это относительная ссылка, потому что нам нужно, чтобы она изменялась автоматически, когда мы копируем формулу в другие ячейки.
(3) Эта формула вернет ИСТИНА or ФАЛАЗА. ИСТИНА означает, что соответствующее значение дублируется, а НЕПРАВДА указывает, что соответствующее значение уникально в столбце.
(4) Иногда ИСТИНА или ЛОЖЬ не могут быть поняты интуитивно. Мы можем объединить исходную формулу и функцию ЕСЛИ, чтобы вернуть Дубликаты непосредственно.
= ЕСЛИ (СЧЁТЕСЛИ ($ C $ 3: $ C $ 12; C3)> 1, «Дубликаты», «»)

1.1.2 Найдите повторяющиеся ячейки в двух столбцах с помощью формулы

В некоторых случаях вам нужно сравнить два столбца и найти повторяющиеся значения. Например, у вас есть два списка имен, и вы хотите найти повторяющиеся имена во втором списке по сравнению с первым. вы можете применить функции ВПР и ЕСЛИОШИБКА, чтобы сделать это легко.

1. Выберите пустую ячейку помимо второго списка имен.

2. Введите формулу = ЕСЛИОШИБКА (ВПР (D3; $ B $ 3: $ B $ 18,1,0); «»), и нажмите Enter .

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

Ноты: В приведенной выше формуле
(1) D3 — первая ячейка во втором списке имен. Ссылка должна изменяться автоматически, когда мы копируем формулу в другие ячейки, в результате она относительна.
(2) 3 млрд долларов: 18 млрд долларов это первый список имен. Это абсолютная ссылка, потому что диапазон должен оставаться статическим, когда мы копируем формулу в другие ячейки.
(3) Когда имя дублируется с именами в первом списке, формула вернет имя; в противном случае возвращается пустое значение.
(4) Вы также можете применить формулу = ЕСЛИ (СЧЁТЕСЛИ ($ B $ 3: $ B $ 18; D3)> 0, «Дубликаты», «») найти повторяющиеся имена во втором списке по сравнению с первым списком. Эта формула вернет «Дубликаты» если соответствующее имя повторяется.

(5) Если вам нужно найти дубликаты в двух столбцах на двух листах, вам просто нужно добавить имя листа перед ссылкой на сравниваемый столбец. В нашем примере просто замените в формуле $ B $ 3: $ B $ 18 на Sheet1! $ B $ 3: $ B $ 18.

1.1.3 Поиск повторяющихся ячеек с учетом регистра с помощью формулы

Формулы, представленные выше, не соответствуют регистру при поиске дубликатов, говорят, что они считают «яблоко» дубликатом с «ЯБЛОКО». Здесь вы можете применить формулу массива, чтобы найти повторяющиеся значения в одном столбце с совпадающими регистрами.

1. Выберите пустую ячейку рядом с столбцом, в котором вы найдете дубликаты.

2. Введите формулу массива = ЕСЛИ (СУММ ((- ТОЧНО ($ C $ 3: $ C $ 12, C3))) 1.2 Найдите и выделите дубликаты с условным форматированием

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

1.2.1 Поиск и выделение повторяющихся ячеек с условным форматированием

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

1. Выберите столбец, в котором вы будете выделять повторяющиеся ячейки.

2. Нажмите Главная > Условное форматирование > Выделите правила ячеек > Дублирующие значения. Смотрите скриншот ниже:

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

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

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

Заметки:
(1) Выделив повторяющиеся ячейки, мы можем легко отфильтровать их. (Нажмите, чтобы посмотреть, как)
(2) После выделения повторяющихся ячеек мы также можем легко удалить дубликаты в большом количестве. (Нажмите, чтобы посмотреть, как)

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

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

1. Выберите диапазон (исключая строку заголовка), в котором вы будете выделять строки на основе повторяющихся ячеек.

2. Нажмите Главная > Условное форматирование > Новое правило.

3. В диалоговом окне «Новое правило форматирования»
(1) Щелкните, чтобы выбрать Используйте формулу, чтобы определить, какие ячейки следует форматировать. вариант;
(2) Введите формулу = СЧЁТЕСЛИ ($ C $ 3: $ C $ 12, $ C3)> 1 в Формат значений, где эта формула истинна коробка;
Tips: В формуле 3 канадских доллара: 12 канадских долларов столбец, содержащий повторяющиеся ячейки, и $ C3 — первая ячейка в столбце.
(3) Щелкните значок Формат кнопку.

4. В диалоговом окне «Формат ячеек» укажите необходимый цвет заливки, шрифт, границы ячеек и щелкните значок OK кнопки последовательно, чтобы сохранить настройки.

Пока что в выбранном диапазоне строки выделяются на основе повторяющихся ячеек в указанном столбце. Смотрите скриншот:

1.2.3 Найдите и выделите повторяющиеся строки с условным форматированием

Чтобы выделить повторяющиеся строки в определенном диапазоне, вы можете применить Условное форматирование функция для достижения этого тоже.

1. Выберите диапазон, кроме строки заголовка.

2. Нажмите Главная > Условное форматирование > Новое правило.

3. В диалоговом окне «Новое правило форматирования»:
(1) Щелкните, чтобы выбрать Используйте формулу, чтобы определить, какие ячейки следует форматировать. вариант;
(2) В Формат значений, где эта формула истинна поле, введите формулу =COUNTIFS($B$3:$B$12,$B3,$C$3:$C$12,$C3,$D$3:$D$12,$D3)>1;
(3) Щелкните значок Формат кнопку.

Заметки: В формуле =COUNTIFS($B$3:$B$12,$B3,$C$3:$C$12,$C3,$D$3:$D$12,$D3)>1:
(1) 3 млрд долларов: 12 млрд долларов — это первый столбец в диапазоне, а $ B3 это первая ячейка в этом столбце;
(2) 3 канадских доллара: 12 канадских долларов — второй столбец в диапазоне, а $ C3 это первая ячейка в столбце;
(3) $ D $ 3: $ D $ 12 — третий столбец диапазона, а $ D3 это первая ячейка в столбце;
(4) Если в вашем диапазоне больше столбцов, вы можете последовательно добавлять ссылки на столбцы и их первые ячейки в формулу.

4. В диалоговом окне «Формат ячеек» укажите необходимый цвет выделения, шрифт, границы ячеек и т. Д., А затем щелкните OK кнопки последовательно, чтобы сохранить настройку.

Пока что идентифицируются и выделяются повторяющиеся строки в выбранном диапазоне. Смотрите скриншот:

1.2.4 Найдите и выделите дубликаты, кроме первых экземпляров

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

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

2. Нажмите Главная > Условное форматирование > Новое правило.

3. В диалоговом окне «Новое правило форматирования»:
(1) Щелкните, чтобы выделить Используйте формулу, чтобы определить, какие ячейки следует форматировать. вариант;
(2) В Формат значений, где эта формула истинна поле, введите формулу = СЧЁТЕСЛИ ($ C $ 3: $ C3; C3)> 1;
Tips: Чтобы выделить строки на основе дубликатов в одном столбце, введите формулу = СЧЁТЕСЛИ ($ C $ 3: $ C3, $ C3)> 1.
(3) Щелкните значок Формат кнопку.

4. В появившемся диалоговом окне Формат ячеек укажите цвет выделения, шрифт, границы ячеек и т. Д. По мере необходимости, а затем нажмите OK кнопки для сохранения настроек.

Затем вы увидите повторяющиеся ячейки, за исключением того, что выделены первые экземпляры в выбранном столбце (или строки на основе дубликатов в указанном столбце). Смотрите скриншот:

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

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

2. В окне нажмите Вставить > Модули, а затем вставьте приведенный ниже код в новое окно модуля.

VBA: выделите повторяющиеся ячейки разными цветами:

3, нажмите F5 ключ или щелкните Run значок для запуска этого VBA.

4. В появившемся диалоговом окне Kutools for Excel выберите столбец, в котором вы выделите повторяющиеся ячейки разными цветами, и нажмите кнопку OK кнопку.

Затем вы увидите, что каждая серия повторяющихся значений выделена цветом.

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

1.4.1 Найдите и выделите повторяющиеся ячейки в одном столбце

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

Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30 -день, кредитная карта не требуется! Бесплатная пробная версия сейчас!

Kutools for Excel — Combines more than 300 Advanced Functions and Tools for Microsoft Excel

1. Выберите столбец или диапазон, в котором вы хотите найти, и выделите повторяющиеся ячейки.

2. Нажмите Кутулс > Выбрать > Выберите повторяющиеся и уникальные ячейки.

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

Заметки: В диалоговом окне «Выбрать повторяющиеся и уникальные ячейки»
(1) Если вам нужно выделить или выделить все дубликаты, кроме первых, отметьте Дубликаты (кроме 1-го) вариант. В противном случае проверьте Все дубликаты (включая 1-й) опцию.
(2) Если вам нужно выделить дубликаты, отметьте Заполните цвет фона вариант и укажите нужный цвет выделения.
(3) Если вы хотите выбрать или выделить строки на основе дубликатов в выбранном столбце, отметьте Выбрать целые строки опцию.
(4) Если вы хотите выбрать или выделить повторяющиеся значения с совпадающими регистрами, отметьте Деликатный случай опцию.

1.4.2 Найдите и выделите повторяющиеся ячейки в двух столбцах или листах

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

Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30 -день, кредитная карта не требуется! Бесплатная пробная версия сейчас!

Kutools for Excel — Combines more than 300 Advanced Functions and Tools for Microsoft Excel

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

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

Ноты:
(1) Если вам нужно найти повторяющиеся строки, отметьте Каждый ряд вариант; и чтобы найти повторяющиеся ячейки, проверьте Одиночная ячейка вариант в на основании раздел;
(2) Отметьте Заполните цвет фона опцию и укажите цвет выделения, если вам нужно выделить повторяющиеся строки или ячейки;
(3) Отметьте Выбранные целые строки вариант, если вам нужно выделить или выделить всю строку на основе дубликатов;
(4) Отметьте Деликатный случай вариант, если вы хотите найти или выделить дубликаты с учетом регистра.

3. Нажмите Ok кнопки последовательно, чтобы завершить настройки.

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

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

2.1 Фильтрация дубликатов с условным форматированием

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

1. Примените условное форматирование, чтобы найти и выделить дубликаты в указанном столбце. (Нажмите, чтобы посмотреть, как)

2. Щелкните, чтобы выбрать заголовок указанного столбца, и щелкните Данные > Фильтр.

3. Нажмите на значок фильтра в заголовке столбца и выберите Фильтр по цвету, а затем выберите указанный цвет условного форматирования в раскрывающемся списке. Смотрите скриншот:

Тогда вы увидите, что отфильтрованы только строки с повторяющимися ячейками. Смотрите скриншот:

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

1. Помимо исходных данных, добавьте вспомогательный столбец и введите Дублировать как заголовок столбца.

2. Выберите первую пустую ячейку под заголовком столбца, введите формулу = ЕСЛИ (СЧЁТЕСЛИ ($ C $ 3: $ C $ 12; C3)> 1, «Дублировать», «»), и перетащите маркер автозаполнения этой ячейки, чтобы скопировать эту формулу в другие ячейки.

Заметки: В формуле выше 3 канадских доллара: 12 канадских долларов столбец, содержащий повторяющиеся данные, и C3 — это первая ячейка (кроме ячейки заголовка) в столбце.

3. Щелкните, чтобы выбрать заголовок столбца — Дубликаты, и щелкните Данные > Фильтр.

4. Затем щелкните значок фильтра в заголовке столбца отметьте только Дублировать, и нажмите OK кнопка. Смотрите скриншот:

Пока отфильтровываются только строки с повторяющимися значениями. Смотрите скриншот:

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

В общем, мы можем применить = СЧЁТЕСЛИ (диапазон; критерии) для подсчета общего количества определенного значения, появляющегося в указанном диапазоне. Говорит считать, сколько раз «Яблоко» появляется в списке A2: A10, Мы можем применить формулу = СЧЁТЕСЛИ (A2: A10; «Яблоко») для подсчета количества этого повторяющегося значения.

Однако формула = СЧЁТЕСЛИ (диапазон, критерии) подсчитывает только указанное повторяющееся значение. Как насчет подсчета повторяющихся значений по двум или нескольким критериям? А что, если подсчет дубликатов с учетом регистра с критериями? Ниже приведены методы, которые помогут вам решить эти проблемы.

3.1.1 Подсчет дубликатов с учетом регистра с помощью критериев

Мы можем применить формулу массива для подсчета повторяющихся значений с учетом регистра с критериями в Excel. Например, чтобы подсчитать, сколько раз значение «Apple» появляется в списке B2: B21 с совпадающими регистрами, вы можете сделать это следующим образом:

1. Выберите пустую ячейку.

2. Введите формулу = СУММ (- ТОЧНО (B2: B20; E2)).

3, нажмите Ctrl + Shift + Enter чтобы вернуть результат подсчета.

Заметки: В формуле массива
(1) B2: B20 — это столбец, в котором вы будете считать дубликаты.
(2) E2 — это ячейка, содержащая указанное значение, количество вхождений которого вы хотите подсчитать. Вы можете изменить ссылку на ячейку на значение в кавычках, говорит «Яблоко».

3.1.2 Подсчет дубликатов по нескольким критериям

Иногда вы можете захотеть подсчитать дубликаты по двум или более критериям. Вы можете применить COUNTIFS функция, чтобы сделать это.
Например, есть таблица продаж фруктов, как показано на скриншоте ниже. Здесь нам нужно подсчитать время повторения яблока, которое было продано 7, а сумма продаж превышает 5. Вы можете подсчитать дубликаты по этим критериям следующим образом:

1. Выберите пустую ячейку.

2. Введите формулу =COUNTIFS(B3:B20,G4,C3:C20,G3,D3:D20,»>300″).

3, нажмите Enter ключ для получения результата подсчета.

Заметки: В приведенной выше формуле
(1) B3: B20 — (первый) столбец даты, и G4 критерий даты;
(2) C3: C20 — (второй) фруктовый столбец, и G3 критерий фруктов;
(3) D3: D20 — (третий) столбец суммы, и «> 300» критерий суммы.
(4) Если в вашей таблице больше столбцов и критериев, вы можете добавить ссылку на столбец и критерии.

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

3.2.1 Подсчет дубликатов в столбце, исключая первое вхождение

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

1. Выберите пустую ячейку рядом со столбцом.

2. Введите формулу = ЕСЛИ (СЧЁТЕСЛИ ($ B $ 3: B3; B3)> 1; «ДА»; «»), а затем перетащите маркер автозаполнения вниз, чтобы скопировать эту формулу в другие ячейки.

Заметки: В формуле выше
(1) $ B $ 3: B3 это диапазон, в котором вы считаете дубликаты. В $ B $ 3: B3, B3 изменится автоматически при копировании формулы в другие ячейки.
(2) B3 — первая ячейка в указанном столбце.
(3) Эта формула вернет ДА ​​или пусто. ДА означает, что соответствующее значение повторяется, а пустое поле означает уникальное.

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

3. Выберите пустую ячейку.

4. Введите формулу = СЧЁТЕСЛИ (C3: C16; «ДА»), и нажмите Enter .

Заметки: В формуле выше
(1) C3: C16 это диапазон, который мы применили по формуле для выявления дубликатов на последнем этапе.
(2) ДА — значение, возвращаемое последней формулой.

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

3.2.2 Подсчет дубликатов в столбце, включая первое вхождение

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

1. Выберите пустую ячейку.

2. Введите формулу =ROWS(B3:B16)-SUM(IF(COUNTIF(B3:B16,B3:B16) =1,1,0)).

3, нажмите Ctrl + Shift + Enter чтобы вернуть результат подсчета.

Заметки: В формуле выше B3: B16 — это указанный столбец, в котором мы хотим подсчитать дубликаты, включая первые вхождения в нем.

3.2.3 Подсчет дубликатов в столбце, включая / исключая первые вхождения

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

Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30 -день, кредитная карта не требуется! Бесплатная пробная версия сейчас!

Kutools for Excel — Combines more than 300 Advanced Functions and Tools for Microsoft Excel

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

2. В диалоговом окне «Выбор повторяющихся и уникальных ячеек» установите флажок Дубликаты (кроме 1-го) or Все дубликаты (включая 1-й) вариант, как вам нужно, и щелкните Ok кнопку.

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

3.3.1 Подсчет дубликатов между двумя столбцами с помощью формулы

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

1. Выберите пустую ячейку.

2. Введите формулу = СУММПРОИЗВ (- (ISNUMBER (MATCH (B3: B12, D3: D18,0)))).

3, нажмите Enter .

Заметки: В формуле выше
(1) B3: B12 — это первый столбец имен, в котором вы будете считать дубликаты.
(2) D3: D18 — это второй столбец имен, на основе которого вы будете подсчитывать дубликаты.

3.3.2 Подсчет дубликатов между двумя столбцами с помощью сторонней надстройки

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

Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30 -день, кредитная карта не требуется! Бесплатная пробная версия сейчас!

Kutools for Excel — Combines more than 300 Advanced Functions and Tools for Microsoft Excel

1. Нажмите Кутулс > Выбрать > Выберите одинаковые и разные ячейки.

2. В диалоговом окне Выбрать одинаковые и разностные ячейки,
(1) Укажите два столбца в Найдите значения в и Согласно информации коробки отдельно.
(2) Проверьте Однокамерная опцию.
(3) Проверьте Те же значения опцию.

4, Нажмите Ok кнопку.

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

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

Иногда в столбце встречаются повторяющиеся значения. Когда мы подсчитываем значения в столбце, нам нужно один раз подсчитать дубликаты. Возьмем, к примеру, ряд значений A, A, B, C, C, C, D, E, E, и нам нужно подсчитать значения и получить 5 (A, B, C, D, E). Здесь в этом разделе будут представлены две формулы для решения этой проблемы.

3.4.1 Подсчитайте каждое повторяющееся значение один раз с помощью формулы

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

1. Выберите пустую ячейку.

2. Введите формулу =SUMPRODUCT((C3:C19<>«»)/COUNTIF(C3:C19,C3:C19&»»)).

3, нажмите Enter ключ для получения результата подсчета.

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

3.4.2 Один раз подсчитать повторяющееся значение с учетом регистра с помощью формулы массива

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

1. Выберите пустую ячейку.

2. Введите формулу массива = СУММ (ЕСЛИОШИБКА (1 / ЕСЛИ (C3: C19 <> «», ЧАСТОТА (ЕСЛИ (ТОЧНО (C3: C19; ТРАНСПОЗИРОВАТЬ (C3: C19))), ПОИСКПОЗ (СТРОКА (C3: C19), СТРОКА (C3: C19) ), «»), МАТЧ (СТРОКА (C3: C19), СТРОКА (C3: C19))), 0), 0)).

3, нажмите Ctrl + Shift + Enter вместе, чтобы получить результат подсчета.

Заметки: В приведенной выше формуле массива C3: C19 — это указанный столбец, в котором вы будете подсчитывать каждую серию дубликатов один раз с совпадающими случаями.

3.4.3 Подсчитайте каждое повторяющееся значение один раз с помощью сторонней надстройки

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

Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30 -день, кредитная карта не требуется! Бесплатная пробная версия сейчас!

Kutools for Excel — Combines more than 300 Advanced Functions and Tools for Microsoft Excel

1. Выберите пустую ячейку.

2. Нажмите Кутулс > Формула Помощник > Статистический > Подсчет ячеек с уникальными значениями (включая первое повторяющееся значение).

3. В диалоговом окне «Помощник по формулам» укажите столбец, в котором вы будете считать дубликаты один раз Диапазон и нажмите Ok кнопку.

Затем результат подсчета сразу же заполняется в выбранной ячейке.

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

3.5.1 Подсчитайте каждое повторяющееся значение в одном столбце с помощью функции ПРОМЕЖУТОЧНЫЙ ИТОГ

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

1. Выберите столбец, в котором вы будете считать каждую серию повторяющихся значений, и нажмите Данные > Сортировка от А до Я or Сортировка Z по A.

2. В появившемся диалоговом окне предупреждения о сортировке проверьте Расширить выбор и нажмите Сортировать кнопку.

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

3. Не снимая выделения, нажмите Данные > Сумма.

4. В диалоговом окне «Итого»
(1) Выберите указанный столбец из При каждом изменении раскрывающийся список;
(2) Выберите Количество из Использование функции раскрывающийся список;
(3) Отметьте только указанный столбец в Добавить промежуточный итог к список;
(4) Щелкните значок OK кнопку.

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

3.5.2 Подсчитайте каждое повторяющееся значение в одном столбце с помощью сводной таблицы

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

1. Выберите диапазон, содержащий указанный столбец, и щелкните Вставить > PivotTable.

2. В диалоговом окне «Создание сводной таблицы» укажите место, в котором будет размещена новая сводная таблица, и щелкните значок OK кнопку.

3. На панели полей сводной таблицы перетащите указанный столбец в оба Ряды и Ценности разделы. Затем вы увидите, что каждая серия повторяющихся значений в указанном столбце учитывается массово. Смотрите скриншот:

3.5.3 Подсчитайте каждое повторяющееся значение в одном столбце с помощью замечательного инструмента

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

Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30 -день, кредитная карта не требуется! Бесплатная пробная версия сейчас!

Kutools for Excel — Combines more than 300 Advanced Functions and Tools for Microsoft Excel

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

1. Добавьте пустой столбец справа от исходного диапазона данных и назовите новый столбец как Количество.

2. Выберите вместе исходный диапазон данных и новый столбец и нажмите Кутулс > Слияние и разделение > Расширенные ряды комбинирования.

3. В диалоговом окне Advanced Combine Rows,
(1) Щелкните, чтобы выбрать указанный столбец, в котором вы будете подсчитывать каждую серию повторяющихся значений, и щелкните Основной ключ.
(2) Щелкните, чтобы выбрать новый столбец (Число), а затем щелкните Рассчитать > Количество.
(3) При необходимости укажите комбинацию или типы расчета для других столбцов.
(4) Щелкните значок Ok кнопку.

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

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

1. Добавьте пустой столбец справа от исходных данных.

2. Введите формулу =IF(COUNTIF($C$3:$C$14,C3)>1,COUNTIF(C$3:C3,C3),»») в первой ячейке добавленного пустого столбца.

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

Заметки: В формуле выше
(1) 3 канадских доллара: 14 канадских долларов — это указанный столбец, в котором вы хотите посчитать повторяющиеся значения по порядку.
(2) C3 — первая ячейка в указанном столбце.
(3) Если соответствующее значение повторяется, эта формула вернет порядковый номер 1, 2, 3… в зависимости от порядка появления; если соответствующее значение уникально, эта формула вернет пустое значение.

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

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

4.1.1 Удаление дубликатов, кроме одного, с функцией удаления дубликатов

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

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

2. Нажмите Данные > Удалить дубликаты.

3. В диалоговом окне «Предупреждение об удалении дубликатов» установите флажок Продолжить текущий выбор и нажмите Удалить дубликаты кнопку.

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

4. В диалоговом окне «Удалить дубликаты» отметьте только указанный столбец и щелкните значок OK кнопку.

Tips: Если вы проверили Расширить выбор на последнем шаге, здесь будут перечислены все столбцы. Тем не менее, вам нужно проверить только указанный столбец.

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

4.1.2 Удаление дубликатов, кроме одного с функцией расширенного фильтра

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

1. Нажмите Данные > Дополнительно.

2. В диалоговом окне «Расширенный фильтр»
(1) Проверьте Скопировать в другое место вариант;
(2) В Диапазон списка поле выберите указанный столбец, из которого вы удалите повторяющиеся значения;
(3) В Скопировать в поле укажите диапазон, в который будет вставлен столбец;
(4) Отметьте Только уникальные записи опцию.
(5) Щелкните значок OK кнопку.

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

4.1.3 Удалить дубликаты, кроме одного, с VBA

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

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

2. Нажмите Вставить > Модули, а затем вставьте ниже код VBA в новое окно модуля.

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

3, нажмите F5 ключ или щелкните Run кнопку для запуска этого VBA.

4. В появившемся диалоговом окне укажите диапазон, из которого вы удалите повторяющиеся значения, и нажмите кнопку OK кнопку.

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

Примечание. Этот код VBA чувствителен к регистру.

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

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

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

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

2. Выберите столбец, из которого вы удалите повторяющиеся значения (включая первые вхождения), и нажмите Данные > Фильтр.

3. Щелкните значок фильтра в заголовке столбца указанного столбца. В раскрывающемся меню выберите Фильтр по цвету, а затем укажите цвет выделения в подменю.

Затем все повторяющиеся значения отфильтровываются.

4. Выберите все отфильтрованные ячейки, щелкните правой кнопкой мыши и выберите Удалить строку из контекстного меню. И в появившемся диалоговом окне подтверждения нажмите OK кнопку, чтобы продолжить.

5. Затем все повторяющиеся значения удаляются сразу. Не снимая выделения с отфильтрованного списка, нажмите Фильтр > Данные еще раз, чтобы отменить фильтр.

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

Заметки: Этот метод удалит строки на основе повторяющихся значений в указанном столбце.

4.2.2 Удалите все дубликаты и исходные значения с помощью вспомогательного столбца

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

1. Добавьте вспомогательный столбец рядом с указанным столбцом, введите формулу = СЧЁТЕСЛИ ($ B $ 3: $ B $ 11; B3) в первую ячейку вспомогательного столбца, а затем перетащите дескриптор автозаполнения вниз, чтобы скопировать эту формулу в другие ячейки. Смотрите скриншот:

Внимание: В формуле выше 3 млрд долларов: 11 млрд долларов — это указанный столбец, из которого вы удалите повторяющиеся значения, и B3 — первая ячейка в указанном столбце.

2. Выберите вспомогательный столбец и щелкните Данные > Фильтр.

3. Щелкните значок фильтра в заголовке вспомогательного столбца, затем в раскрывающемся меню отметьте все значения, кроме 1, и нажмите OK кнопка. Смотрите скриншот:

4. Теперь все повторяющиеся значения отфильтрованы. Выберите отфильтрованные ячейки во вспомогательном столбце, щелкните правой кнопкой мыши и выберите Удалить строку в контекстном меню.

5. В появившемся диалоговом окне подтверждения нажмите кнопку OK кнопку, чтобы продолжить.

6. Теперь все повторяющиеся значения и их строки удаляются массово. Продолжайте нажимать Данные > Фильтр еще раз, чтобы отменить фильтр.

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

4.2.3 Удалите все дубликаты и исходные значения с помощью замечательного инструмента

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

Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30 -день, кредитная карта не требуется! Бесплатная пробная версия сейчас!

Kutools for Excel — Combines more than 300 Advanced Functions and Tools for Microsoft Excel

1. Выберите столбец, из которого вы удалите дубликаты.

2. Нажмите Кутулс > Выбрать > Выберите повторяющиеся и уникальные ячейки.

3. В диалоговом окне «Выбор повторяющихся и уникальных ячеек» установите флажок Все дубликаты (включая 1-й) и нажмите Ok кнопку.

Ноты:
(1) Чтобы выбрать и удалить повторяющиеся значения, исключая первые вхождения, установите флажок Дубликаты (кроме 1-го) опцию.
(2) Чтобы выбрать и удалить строки на основе повторяющихся значений в указанном столбце, установите флажок Выбрать целые строки опцию.
(3) Чтобы выбрать и удалить повторяющиеся значения с совпадающими регистрами, установите флажок Деликатный случай опцию.
(4) Чтобы выбрать, выделить и удалить повторяющиеся ячейки или строки, установите флажок Заполните цвет фона or Цвет заливки шрифта параметры и укажите цвета заливки или шрифта по своему усмотрению.

4. Затем появится диалоговое окно, показывающее, сколько ячеек было выбрано, щелкните значок OK чтобы закрыть его.

5. Щелкните выделенные ячейки правой кнопкой мыши и выберите Удалить из контекстного меню.

6. В появившемся диалоговом окне «Удалить» проверьте Сдвинуть ячейки вверх и нажмите OK кнопку.

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

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

Первый способ — применить встроенный Удалить дубликаты возможность удаления строк по дубликату в указанном столбце. Просто выберите диапазон, в котором вы будете удалять строки, нажмите Данные > Удалить дубликаты чтобы включить эту функцию, отметьте только указанный столбец в диалоговом окне «Удалить дубликаты», а затем нажмите OK чтобы завершить операцию удаления.

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

В качестве альтернативы вы можете добавить вспомогательный столбец и применить формулу = СЧЁТЕСЛИ ($ C $ 3: $ C $ 21; C3) для выявления дубликатов в указанном столбце. Затем отфильтруйте числа больше 1 во вспомогательном столбце и легко удалите все отфильтрованные строки. После очистки фильтра вы увидите, что строки с уникальными значениями остаются только в указанном столбце.

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

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

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

4.4.1 Удалить дубликаты в двух столбцах с помощью вспомогательного столбца

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

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

2. В первой ячейке вспомогательного столбца (исключая ячейку заголовка) введите формулу = IF (ISERROR (MATCH (C2; $ A $ 2: $ A $ 13,0)), «Уникальный», «Повторяющийся»), а затем перетащите маркер автозаполнения вниз, чтобы скопировать формулу в другие ячейки.

Заметки: В формуле выше
(1) C2 это первая ячейка в указанном столбце, из которой вы удалите повторяющиеся значения;
(2) $ A $ 2: $ A $ 13 это другой столбец, с которым нам нужно сравнить.
(3) Эта формула вернет Дублировать если соответствующее значение дублируется со значениями в другом столбце, и вернуть Уникальное Произведение если отличается от значений в другом столбце.

3. Выберите вспомогательный столбец и щелкните Данные > Фильтр.

4. Щелкните значок фильтра в заголовке вспомогательного столбца, затем в раскрывающемся меню отметьте только Дублировать, и нажмите OK кнопку.

5. Теперь все повторяющиеся значения отфильтрованы. Выберите отфильтрованные ячейки, щелкните правой кнопкой мыши и выберите Удалить строку из контекстного меню. Затем нажмите OK во всплывающем диалоговом окне подтверждения.

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

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

Заметки: Этот метод удалит все строки на основе повторяющихся значений в указанном столбце.

4.4.2 Удалите дубликаты в двух столбцах с помощью замечательного инструмента

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

Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30 -день, кредитная карта не требуется! Бесплатная пробная версия сейчас!

Kutools for Excel — Combines more than 300 Advanced Functions and Tools for Microsoft Excel

1. Нажмите Кутулс > Выбрать > Выберите одинаковые и разные ячейки для включения этой функции.

2. В диалоговом окне «Выбрать одинаковые и разные ячейки» укажите оба столбца в поле Найдите значения в и Согласно информации коробки отдельно, отметьте Однокамерная и Те же значения параметры и щелкните Ok кнопка. Смотрите скриншот:

3. Затем все повторяющиеся значения в количестве двух столбцов выбираются в первом столбце (столбец, который вы указали в Найдите ценность в коробка). И нажмите кнопку OK в появившемся диалоговом окне.

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

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

Автоматически удалять дубликаты из списка в Excel
В Excel мы можем использовать функцию «Удалить дубликаты» для удаления одинаковых значений из списка, но есть ли какой-нибудь трюк для автоматического удаления дубликатов из списка? В этой статье я расскажу о приемах автоматического удаления дубликатов, если они появляются в указанном столбце Excel.

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

Используйте ярлык для удаления дубликатов в столбце или строке Excel
В Excel утилита «Удалить дубликаты» может помочь вам удалить дубликаты в столбце, но знаете ли вы, как использовать ярлык для удаления дубликатов в столбце или строке Excel? Удалите дубликаты ярлыком.

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

Источник

0 / 0 / 0

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

Сообщений: 4

1

19.01.2009, 15:57. Показов 40087. Ответов 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

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