Есть список цифор... как удалить все одинаковые? НЕ ДУБЛИ а одинаковые. т. е. если в списке существует 2 одинаковые цифры на припер 25, 25. удалить их оба чтобы в списке не было цифры 25. Как это сделать?
Есть список цифор... как удалить все одинаковые? НЕ ДУБЛИ а одинаковые. т. е. если в списке существует 2 одинаковые цифры на припер 25, 25. удалить их оба чтобы в списке не было цифры 25. Как это сделать?art22
Отметить все с дублями и удалить... Формулами удалить не получится, но можно вывести результат в другом диапазоне. Макрос может удалить на месте. Как нужно? Файл-пример - от Вас.
Отметить все с дублями и удалить... Формулами удалить не получится, но можно вывести результат в другом диапазоне. Макрос может удалить на месте. Как нужно? Файл-пример - от Вас.vikttur
Сообщение отредактировал vikttur - Понедельник, 19.06.2017, 14:32
вроде работает. НО у меня там 121488 строк... когда я в место 112 указал данное значение жду уже мин 10 завис ексел. Неужели нет другой возможности чтобы так сильно не грузил? У меня комп мощный сам по себе первый раз так зависает)))Стандартный же инструмент по удалению дублей за 2 сек все дубли удаляет, а вот если бы не только дубли удалял а все похожие цифры были бы супер.)
вроде работает. НО у меня там 121488 строк... когда я в место 112 указал данное значение жду уже мин 10 завис ексел. Неужели нет другой возможности чтобы так сильно не грузил? У меня комп мощный сам по себе первый раз так зависает)))Стандартный же инструмент по удалению дублей за 2 сек все дубли удаляет, а вот если бы не только дубли удалял а все похожие цифры были бы супер.)art22
На большом количестве данных - желательно макросом: [vba]
Код
Sub removeDub(rng As Range) Dim d As Object, c As Range, dKey Set d = CreateObject("Scripting.Dictionary") For Each c In rng.Cells dKey = c.Value If d.exists(dKey) Then d.Item(dKey) = d.Item(dKey) + 1 Else d.Item(dKey) = 1 End If Next For Each c In rng.Cells dKey = c.Value If d.Item(dKey) > 1 Then c.Value = "" End If Next End Sub
[/vba] Пример вызова: [vba]
Код
Sub test() removeDub Range("A2:A20") End Sub
[/vba] Передаем процедуре только диапазон с числами - и она сотрёт все дубли. Затем уже можно можно просто выбрать и удалить все строки с пустым ключом.
На большом количестве данных - желательно макросом: [vba]
Код
Sub removeDub(rng As Range) Dim d As Object, c As Range, dKey Set d = CreateObject("Scripting.Dictionary") For Each c In rng.Cells dKey = c.Value If d.exists(dKey) Then d.Item(dKey) = d.Item(dKey) + 1 Else d.Item(dKey) = 1 End If Next For Each c In rng.Cells dKey = c.Value If d.Item(dKey) > 1 Then c.Value = "" End If Next End Sub
[/vba] Пример вызова: [vba]
Код
Sub test() removeDub Range("A2:A20") End Sub
[/vba] Передаем процедуре только диапазон с числами - и она сотрёт все дубли. Затем уже можно можно просто выбрать и удалить все строки с пустым ключом.AndreTM
Skype: andre.tm.007 Donate: Qiwi: 9517375010
Сообщение отредактировал AndreTM - Вторник, 20.06.2017, 06:00
Спасибо огромное все получился) С макросами не работал. но сохраню код на всякий случай, думаю понадобиться.
Использовал =ЕСЛИ(СЧЁТЕСЛИ... немного тормозила но быстро пришел в себя качаю сейчас офис 2010 Версию 64 бита может что то измениться.
Может скажете как можно быстро растянуть данную формулу до самого низа чтобы не тянуть мишкой вниз и ждать пока до самого конца опустится и размножиться...
Спасибо огромное все получился) С макросами не работал. но сохраню код на всякий случай, думаю понадобиться.
Использовал =ЕСЛИ(СЧЁТЕСЛИ... немного тормозила но быстро пришел в себя качаю сейчас офис 2010 Версию 64 бита может что то измениться.
Может скажете как можно быстро растянуть данную формулу до самого низа чтобы не тянуть мишкой вниз и ждать пока до самого конца опустится и размножиться...art22
2 Протягиваем ее вниз до конца (выделить В2, даблклик на правый нижний уголок ячейки (там квадратик такой виден)) 3 Копируем это всё и вставляем спецвставкой - значения 4 Сортируем всё по столбцу А 5 Пишем рядом формулу
Код
=(A2=A1)+(A2=A3)
6 Протягиваем ее вниз до конца 7 Копируем это всё и вставляем спецвставкой - значения 8 Сортируем всё по столбцу С от мин к макс 9 Фильтруем столбец С "не равно нулю" 10 Встаем в первую ячейку, жмем Контрл СтрелкаВниз, удаляем строки 11 Снимаем фильтр 12 Сортируем по столбцу В от мин к макс Пункты 1, 2, 3, 12 нужны только для того, чтобы вернуть обратно первоначальное расположение Если это не обязательно, то их можно не выполнять У меня все это заняло секунд 20
1 Пишем рядом формулу
Код
=СТРОКА()
2 Протягиваем ее вниз до конца (выделить В2, даблклик на правый нижний уголок ячейки (там квадратик такой виден)) 3 Копируем это всё и вставляем спецвставкой - значения 4 Сортируем всё по столбцу А 5 Пишем рядом формулу
Код
=(A2=A1)+(A2=A3)
6 Протягиваем ее вниз до конца 7 Копируем это всё и вставляем спецвставкой - значения 8 Сортируем всё по столбцу С от мин к макс 9 Фильтруем столбец С "не равно нулю" 10 Встаем в первую ячейку, жмем Контрл СтрелкаВниз, удаляем строки 11 Снимаем фильтр 12 Сортируем по столбцу В от мин к макс Пункты 1, 2, 3, 12 нужны только для того, чтобы вернуть обратно первоначальное расположение Если это не обязательно, то их можно не выполнять У меня все это заняло секунд 20_Boroda_