Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Поиск дубликатов в КНИГЕ
 
В стандартных средствах Excel существует "поиск дубликатов", недостаток этого помощника в том, что он ищет по листу и его нельзя настроить на аналогичный поиск дубликатов по книге.В книге несколько листов с подобными данными (списки людей) Есть ли возможность решить такую задачу?
 
макросом
Согласие есть продукт при полном непротивлении сторон.
 
Вот пример. Только строк в таблице может быть до 1500  
 
Цитата
"поиск дубликатов"
Где такое в "Стандартных средствах Excel"? Знаю "Удалить дубликаты" и в условном форматировании Выделить- "повторяющиеся значения", а поиск где? Что хотите получить после того как найдете одинаковые в книге?
Да есть еще "Найти" -Ctrl+F, но с помощью этого поиска можно найти во всей книге.
Изменено: gling - 9 Мар 2015 22:49:07
 
Извините, неправильно написала - вы абсолютно правы. В условном форматировании есть "повторяющиеся значения", которые к сожалению работают только в пределах одного листа.
 
owl-ka, так с дубликатами что надо сделать? просто выдать напортив каждого сколько дубликатов найдено для этого ФИО ? И всегда будет в столбце С то что дубликаты чего ищутся?
Работать надо не 12 часов, а головой.
 
идеальный вариант - указать адрес второго значения. Подойдет даже просто указать цветом. Удалять нельзя, вдруг разные люди!
 
что значит адрес? адрес ячейки с листом? а если дубликата 4 то всё указывать?
Работать надо не 12 часов, а головой.
 
Я не подумала, в моей практике больше 2-х не встречалось, думаю больше и не встретится
 
Может тогда через "Найти" действовать, там и лист и сразу переход на лист можно использовать.
 
если установить условное форматирование, то на одном листе сразу будет высвечиваться повторяющиеся данные, а вот если этот человек на другом листе, можно и не уследить, а так как людей много.... Одним словом если кто-то переезжает с общежития в другое или на квартиру а то и обратно, можно его внести во все списки
 
Вот так можно. Смотрите вложение.
Работать надо не 12 часов, а головой.
 
а можно попросить еще немного модернизировать - выделение неядовитым цветом (просто столбец D я скрою).
 
Можно
Изменено: Leanna - 9 Мар 2015 23:34:58 (замена файла)
Работать надо не 12 часов, а головой.
 
Можно УФ сделать на все листы. Если на первом листе будет список всех, то на других листах можно увидеть есть ли они в списке. Наверно нужно наоборот, если на любом из листов есть, то в списке чтобы выделился. Пока такой вариант. Лучше конечно Ваш пример, чтобы видеть о чем речь.
Изменено: gling - 9 Мар 2015 23:31:34
 
Leanna , спасибо, это как раз то, что нужно!!!!

gling,  предложение интересное, вот только нужно время на то, чтобы их собрать, на один лист. А информация нужна не об общем количестве людей, а именно по листам. Примерно так - общежитие 1 - 10 семей, 20 человек,
общежитие 2 - 5 семей, 15 человек,
....................................................
квартиры - 100 семей, 250 человек,

Каждый лист соответствует определенному жилью. Если переносить на один лист, нужно будет делать суммарную нумерацию по людям и по семьям. По людям просто, а по семьям так не получится - только ручками.
 
Люди спасите и помогите!!!! Все форумы облазил... везде пишут поиск дубликатов в одном или максимум в двух столбцах... мне нужно найти и ПОСЧИТАТЬ все дубликаты в целой области (около 100 строк и около 30 столбцов)
дубликаты (текстовые) заранее не известны(((
А мне нужно узнать значения эти текстовые и сколько раз они повторяются...
 
Код
Sub FindDuplicates()
Dim Dict As Object, aa As Range, arr()
Set Dict = CreateObject("Scripting.Dictionary")
For Each aa In Sheets(1).UsedRange
  If Len(aa.Value) > 0 Then
    If Not Dict.exists(aa.Value) Then
      Dict.Add aa.Value, 1
    Else
      Dict.Item(aa.Value) = Dict.Item(aa.Value) + 1
    End If
  End If
Next
On Error Resume Next
Set aa = Application.InputBox("Select distination cell.", , , , , , , 8)
If Err.Number > 0 Then Set aa = [AA1]
On Error GoTo 0
If aa.Cells.Count > 1 Then Set aa = Range(Left(aa.Address, InStr(":", aa.Address) - 1))
aa.Resize(Dict.Count) = Application.Transpose(Dict.keys)
aa.Offset(0, 1).Resize(Dict.Count) = Application.Transpose(Dict.items)
End Sub
 
Anchoret,
вот такая фигня вылазит(


Спасибо за быстрое реагирование!)
Screenshot_1.png (7.88 КБ)
Изменено: Okl - 11 Мар 2018 17:40:14
 
Okl, перед размещением на форум код проверялся. Ошибок не было.
 
Anchoret,А пример файла с этим макросом можно?
 
Цитата
Okl написал: А пример файла с этим макросом можно?
Можно. Ознакомьтесь с Правилами и приложите файл-пример в соответствии с ними
Согласие есть продукт при полном непротивлении сторон.
 
Okl, вот
 
Anchoret, Ваш шикарный макрос у меня выдаёт ошибку в строке
Код
If aa.Cells.Count > 1 Then Set aa = Range(Left(aa.Address, InStr(":", aa.Address) - 1))

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

 
Andr85, как раз эту часть не тестировал. И раз Вас туда занесло, то вместо одной ячейки для левого верхнего угла вставки Вы выбрали несколько ячеек. Место вставки можно прописать жестко:
Код
set aa=sheets("....").[A1]' это только для примера и вместо точек должно быть имя листа

Также вместо "UsedRange"  в начале кода можно указать откуда макросу брать данные. Например "Selection" или "[A2:J5500]"

Изменено: Anchoret - 11 Мар 2018 20:31:09
Страницы: 1
Читают тему (гостей: 1)
Наверх