Сортировка в excel по количеству повторений

Отсортировать по количеству повторяющихся значений.

Kaktus8

Дата: Вторник, 02.04.2019, 18:40 |
Сообщение № 1

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

Ранг: Участник

Сообщений: 79


Репутация:

0

±

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


Excel 2016

Уважаемые знатоки Excel,
помогите, пожалуйста, отсортировать данные по количеству их повторений.

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

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

3-1a.xlsx
(10.3 Kb)

Сообщение отредактировал Kaktus8Вторник, 02.04.2019, 18:42

 

Ответить

Pelena

Дата: Вторник, 02.04.2019, 19:28 |
Сообщение № 2

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

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

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Сводная не подойдёт?

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

9691286.xlsx
(28.0 Kb)


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

 

Ответить

Kaktus8

Дата: Вторник, 02.04.2019, 19:48 |
Сообщение № 3

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

Ранг: Участник

Сообщений: 79


Репутация:

0

±

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


Excel 2016

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

 

Ответить

_Boroda_

Дата: Вторник, 02.04.2019, 20:24 |
Сообщение № 4

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

Так нужно?
1. число

Код

=-ПРОСМОТР(;-A$2:A$24/(НАИБОЛЬШИЙ(СЧЁТЕСЛИ(A:A;A$2:A$24)+1%%/A$2:A$24;СУММ(B$1:B1)+1)=СЧЁТЕСЛИ(A:A;A$2:A$24)+1%%/A$2:A$24))

кол-во
2. цифры

Код

=ЕСЛИ(L2;ИНДЕКС(A:A;ОСТАТ(НАИБОЛЬШИЙ(ЧАСТОТА(МУМНОЖ($A$2:$K$17;10^СТРОКА($1:$11));МУМНОЖ($A$2:$K$17;10^СТРОКА($1:$11)))+СТРОКА($2:$18)%%;СТРОКА(M1));1)/1%%);)

кол-во

Код

=НАИБОЛЬШИЙ(ЧАСТОТА(МУМНОЖ(A$2:K$17;10^СТРОКА($1:$11));МУМНОЖ(A$2:K$17;10^СТРОКА($1:$11)));СТРОКА(L1))

Обе первые формулы массивные, вводятся одновременным нажатием Контрл Шифт Ентер

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

3-1a_1.xlsx
(13.8 Kb)


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Kaktus8

Дата: Вторник, 02.04.2019, 22:08 |
Сообщение № 5

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

Ранг: Участник

Сообщений: 79


Репутация:

0

±

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


Excel 2016

Да! То, что надо!

Только два момента, если можно, поправьте пожалуйтста!
1. Число.
При добавлении в столбец А новых чисел после 24 строки не происходит обновления.
2. Цифры.
В диапазоне M-W, — 3,4,8,9 строчках, последние цифры исчезли.

По пункту 1: я так понял, нужно вместо A$24 (в диапазонах) ввести А$900, например?
На всякий случай спрашиваю, вдруг ещё какая-то тонкость есть.
По пункту 2: по поводу последних цифр, — не могу предположить. Пока не смог разобраться.
По пункту 2: чтобы введённые после 17 строки, также обрабатывались, достаточно вместо $K$17 ввести $K$900, например, и всё?

Сообщение отредактировал Kaktus8Вторник, 02.04.2019, 22:18

 

Ответить

_Boroda_

Дата: Вторник, 02.04.2019, 22:37 |
Сообщение № 6

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

Правильно спрашиваете, конечно есть. Сначала хотел при одинаковом кол-во по возрастанию сделать, ну да ладно

Код

=ЕСЛИОШИБКА(-ПРОСМОТР(;-A$2:A$99/(НАИБОЛЬШИЙ(СЧЁТЕСЛИ(A:A;A$2:A$99)+A$2:A$99%%;СУММ(B$1:B1)+1)=СЧЁТЕСЛИ(A:A;A$2:A$99)+A$2:A$99%%));)

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

Код

=НАИБОЛЬШИЙ(ЧАСТОТА(МУМНОЖ(—A$2:K$99;10^СТРОКА($1:$11));МУМНОЖ(—A$2:K$99;10^СТРОКА($1:$11)));СТРОКА(L2))

Пропавшие цифры — это я просто $ забыл

Код

=ЕСЛИ($L2;ИНДЕКС(A:A;ОСТАТ(НАИБОЛЬШИЙ(ЧАСТОТА(МУМНОЖ(—$A$2:$K$98;10^СТРОКА($1:$11));МУМНОЖ(—$A$2:$K$98;10^СТРОКА($1:$11)))+СТРОКА($2:$99)%%;СТРОКА(M2));1)/1%%);)

Про кол-во пустых — аналогично

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

3-1a_2.xlsx
(13.7 Kb)


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Kaktus8

Дата: Среда, 03.04.2019, 00:27 |
Сообщение № 7

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

Ранг: Участник

Сообщений: 79


Репутация:

0

±

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


Excel 2016

Супер! Фантастика просто!
Большущее спасибо!

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

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

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

Сообщение отредактировал Kaktus8Среда, 03.04.2019, 00:32

 

Ответить

_Boroda_

Дата: Среда, 03.04.2019, 09:47 |
Сообщение № 8

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

Речь о том, что если макс кол-во повторов у Вас 9, а исходных значений 30, то диапазон нужно писать не меньше, чем A$2:A$40. 40-30>9
Кстати, я немного перебдел, на первом личсте это не актуально

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

Код

=ЕСЛИ($L2;ИНДЕКС(A:A;ОСТАТ(НАИМЕНЬШИЙ(ЧАСТОТА(МУМНОЖ(—$A$2:$K$97;10^ТРАНСП(СТОЛБЕЦ(A:K)));МУМНОЖ(—$A$2:$K$97;10^ТРАНСП(СТОЛБЕЦ(A:K))))+СТРОКА($2:$98)%%;ЧСТРОК(A$1:A$98)-СТРОКА());1)/1%%);)

Код

=НАИМЕНЬШИЙ(ЧАСТОТА(МУМНОЖ(—A$2:K$97;10^ТРАНСП(СТОЛБЕЦ(A:K)));МУМНОЖ(—A$2:K$97;10^ТРАНСП(СТОЛБЕЦ(A:K))));ЧСТРОК(A$1:A$98)-СТРОКА())

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

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

3-1a_3.xlsx
(13.1 Kb)


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Kaktus8

Дата: Среда, 03.04.2019, 15:04 |
Сообщение № 9

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

Ранг: Участник

Сообщений: 79


Репутация:

0

±

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


Excel 2016

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

Большое спасибо!
Всё прекрасно работает!

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

Я очень сильно извиняюсь, так как невольно ввёл Вас в заблуждение, написав про «удаление строк». На самом деле я имел в виду «удаление строк данных» из колонки «Наборы данных (11 цифр)», то есть речь шла об удалении не всей строки в таблице, а только ячеек с исходными данными в диапазоне столбцов А-К (например А16-К16) со «сдвигом ячеек вверх». После такой процедуры удаления, ячейки с формулами в диапазоне M-W пишут, что «значение недоступно для формулы».

Сообщение отредактировал Kaktus8Среда, 03.04.2019, 15:11

 

Ответить

_Boroda_

Дата: Среда, 03.04.2019, 15:13 |
Сообщение № 10

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

Ох …
Ловите

Код

=ЕСЛИ($L2;ИНДЕКС(A:A;ОСТАТ(НАИМЕНЬШИЙ(ЧАСТОТА(МУМНОЖ(—$A$2:$K$97;10^ТРАНСП(СТОЛБЕЦ($A$1:$K$1)));МУМНОЖ(—$A$2:$K$97;10^ТРАНСП(СТОЛБЕЦ($A$1:$K$1))))+СТРОКА(A$2:A$98)%%;ЧСТРОК(A$1:A$98)-СТРОКА());1)/1%%);)

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

3-1a_4.xlsx
(13.1 Kb)


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Kaktus8

Дата: Среда, 03.04.2019, 15:43 |
Сообщение № 11

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

Ранг: Участник

Сообщений: 79


Репутация:

0

±

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


Excel 2016

Большущее Вам спасибо за помощь!
Всё идеально!
Низкий поклон!
yes

 

Ответить

Kaktus8

Дата: Среда, 03.04.2019, 19:36 |
Сообщение № 12

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

Ранг: Участник

Сообщений: 79


Репутация:

0

±

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


Excel 2016

Кхм… Мне ужасно неловко опять беспокоить,
но обнаружился такой момент:
на Листе 1 формула перестаёт работать, если число больше 4 знаков (разрядов), а нужно, хотя-бы 16.
Пробовал форматы ячеек менять, но ничего не помогает.
Ума не приложу, как с этим быть. Посоветуйте, пожалуйста!

Сообщение отредактировал Kaktus8Среда, 03.04.2019, 19:43

 

Ответить

_Boroda_

Дата: Среда, 03.04.2019, 19:53 |
Сообщение № 13

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

Ничего не знаю, какой пример — такой ответ. Будет пример с числом в 16 знаков (что в Excel в принципе невозможно, 15 максимум), будет и ответ


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Kaktus8

Дата: Среда, 03.04.2019, 20:01 |
Сообщение № 14

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

Ранг: Участник

Сообщений: 79


Репутация:

0

±

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


Excel 2016

Просто на Лист1, столбец А («Данные»), если ввести, например, «11111111111», то сортировка по частоте уже не работает.
Хотя-бы для для 11 разрядов как-то настроить (имеются в виду разряды только ДО запятой).
Файл тот-же (Ваш последний).

Сообщение отредактировал Kaktus8Среда, 03.04.2019, 20:03

 

Ответить

_Boroda_

Дата: Среда, 03.04.2019, 20:45 |
Сообщение № 15

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

Эта формула с 11-значными числами будет работать только если макс кол-во повторов в массиве не больше 999. А лучше 99. Да и то в 14-15-м знаке могут быть косяки из-за округления перевода двоичной-десятичной систем
Замените %% на *10^-11

Код

=ЕСЛИОШИБКА(-ПРОСМОТР(;-A$2:A$32/(НАИБОЛЬШИЙ(СЧЁТЕСЛИ(A:A;A$2:A$32)+A$2:A$32*10^-11;СУММ(B$1:B1)+1)=СЧЁТЕСЛИ(A:A;A$2:A$32)+A$2:A$32*10^-11));)


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Kaktus8

Дата: Среда, 03.04.2019, 21:15 |
Сообщение № 16

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

Ранг: Участник

Сообщений: 79


Репутация:

0

±

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


Excel 2016

Эта формула с 11-значными числами будет работать только если макс кол-во повторов в массиве не больше 999. А лучше 99.

Спасибо!
Надо же, какие тонкости — даже в голову не придёт.
Ну, хотя-бы так, — тоже неплохо.
А под «не больше 999 повторов в массиве» имеется в виду общее количество повторов для всех цифр или максимальное их количество для одной цифры? И единичные повторы тоже нужно учитывать?

 

Ответить

_Boroda_

Дата: Среда, 03.04.2019, 21:29 |
Сообщение № 17

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

Для одного числа


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Kaktus8

Дата: Среда, 03.04.2019, 21:50 |
Сообщение № 18

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

Ранг: Участник

Сообщений: 79


Репутация:

0

±

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


Excel 2016

Тогда всё хорошо. У меня вряд-ли наберётся больше сотни повторов.
Ещё раз, большущее спасибо!

 

Ответить

_Boroda_

Дата: Среда, 03.04.2019, 21:58 |
Сообщение № 19

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

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


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

  • pton

Доброго времени суток.
имеется документ в формате Excel, в первом столбце записаны номера телефонов, во втором и третьем — адреса и ФИО. Собственно вопрос: как выполнить сортировку по наиболее встречающимся/повторяющимся номерам в порядке убывания?
Использую MS Excel 2007


  • Вопрос задан

    более трёх лет назад

  • 721 просмотр

Пригласить эксперта

Сделайте сводную таблицу по номеру телефона и количеству повторений. В ней уже может делать сортировку.

Если сортировка нужна в самом исходном документе и ответ Константина лично Вам не подходит: можете сделать вспомогательный столбец, в котором функцией COUNTIFS / СЧЁТЕСЛИМН можно подсчитать сколько раз номер из текущей строки встречается в столбце. И уже по этому вспомогательному столбцу можно сделать сортировку по убыванию.


  • Показать ещё
    Загружается…

17 апр. 2023, в 02:32

5000 руб./за проект

17 апр. 2023, в 01:56

1200 руб./в час

17 апр. 2023, в 01:43

20000 руб./за проект

Минуточку внимания

Содержание

  1. Excel сортировка по количеству повторений
  2. Как отсортировать данные в Excel по наиболее частому значению?
  3. Быстро найти наиболее часто встречающееся текстовое значение или число в Excel

Excel сортировка по количеству повторений

Как отсортировать данные в Excel по наиболее частому значению?

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

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

1. Выберите пустую ячейку рядом с исходным столбцом и введите эту формулу = СЧЁТЕСЛИ ($ A $ 2: $ A $ 16; A2) в него, а затем перетащите дескриптор автозаполнения этой ячейки в нужный диапазон. Смотрите скриншот:

Внимание: В приведенной выше формуле A2: A16 — это указанный список, в котором вы будете выполнять сортировку по частоте, а A2 — это первые данные этого списка.

2. Продолжайте выделять эти ячейки формулы и щелкните Данные > Сортировка от А до Я or Сортировка Z по A как вам нужно. Смотрите скриншот ниже:

3. В открывшемся диалоговом окне «Предупреждение о сортировке» установите флажок Расширить выбор и нажмите Сортировать кнопка. Смотрите скриншот выше:

4. И теперь исходный столбец уже отсортирован по частоте (см. Снимок экрана ниже). При необходимости удалите добавленный вспомогательный столбец.

На самом деле, 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. Во всплывающем Расширенная сортировка диалоговом окне выберите столбец, который вы будете сортировать по частоте, выберите частота из Сортировать по в раскрывающемся списке укажите Оформить заказ вы хотите, и нажмите кнопку ОК. Смотрите скриншот:

Kutools для Excel Расширенная сортировка Утилита предоставляет нам гораздо более гибкие методы сортировки: сортировка по длине текста, сортировка по фамилии, сортировка по абсолютному значению и т. д. Нажмите, чтобы узнать больше .

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

Быстро найти наиболее часто встречающееся текстовое значение или число в Excel

Как правило, мы можем применить функцию РЕЖИМ, чтобы найти наиболее частое число в Excel. Но как получить наиболее частое текстовое значение из указанного диапазона? Kutools для Excel Найдите наиболее распространенное значение формула предоставляет вам простой способ!

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

Источник

Skip to content

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

=A2&B2&C2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

Здравствуйте. Задача скорее всего простая, но решения на форуме не нашел.
В первом столбце — названия групп, во втором — их значения.

https://yadi.sk/i/mrb8GZ2BB8SBSg

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

https://yadi.sk/i/DSoIefszexc8Ig

Изменено: Андрей Кольчурин09.04.2021 01:59:46

 

vikttur

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

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

Сортировать в рисунках — задача не из простых :)
Прикрепите пример

 

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

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

  • пример.xlsx (10.13 КБ)

 

msi2102

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

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

можно в дополнительный столбец записать формулу =СЧЁТЕСЛИ($A$2:$A$10;A2)&» «&A2 протянуть до конца списка  установить фильтр и отсортировать Я-А

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

  • пример.xlsx (11.79 КБ)

Изменено: msi210209.04.2021 08:26:59

 

Евгений Смирнов

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

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

#5

09.04.2021 09:04:41

Метод Sort не знаю воспользовался макрорекордером, может кто-то красивее напишет.

Код
Sub SENdsfjk(): Dim Rg1 As Range, kSt&, Tp$
kSt = Cells(Rows.Count, 1).End(xlUp).Row
ActiveSheet.Sort.SortFields.Add Key:=Range("B2"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveSheet.Sort
    .SetRange Range("A2:B" & kSt)
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

    For i = 3 To kSt
If Cells(i, 1) = Cells(i - 1, 1) Then
Tp = Cells(i, 1)
If Rg1 Is Nothing Then Set Rg1 = Union(Cells(i, 1), Cells(i - 1, 1)) Else Set Rg1 = Union(Rg1, Cells(i, 1))
Else
If Not Rg1 Is Nothing Then Rg1.ClearContents:  Rg1.Merge: Rg1.Value = Tp: Set Rg1 = Nothing
End If
    Next i
If Not Rg1 Is Nothing Then Rg1.ClearContents:  Rg1.Merge: Rg1.Value = Tp
End Sub

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

  • пример1234.xlsm (21.29 КБ)

Изменено: Евгений Смирнов09.04.2021 10:37:34

 

jakim

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

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

Предлагаю вариант с использованием функции АГРЕГАТ.

Изменено: jakim09.04.2021 10:00:08

 

Евгений Смирнов

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

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

#7

09.04.2021 11:27:32

Оказывается макрорекордер в Excel 2010 пишет кучу лишнего. Так немного короче

Код
Sub SENdsfjk1(): Dim Rg1 As Range, kSt&, Tp$
kSt = Cells(Rows.Count, 1).End(xlUp).Row
    Range("A2:B" & kSt).Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
    For i = 3 To kSt
If Cells(i, 1) = Cells(i - 1, 1) Then
Tp = Cells(i, 1)
If Rg1 Is Nothing Then Set Rg1 = Union(Cells(i, 1), Cells(i - 1, 1)) Else Set Rg1 = Union(Rg1, Cells(i, 1))
Else
If Not Rg1 Is Nothing Then Rg1.ClearContents:  Rg1.Merge: Rg1.Value = Tp: Set Rg1 = Nothing
End If
    Next i
If Not Rg1 Is Nothing Then Rg1.ClearContents:  Rg1.Merge: Rg1.Value = Tp
End Sub

Автор еще хотел добавить пустые строки в предыдущем нет. В коде ниже есть

Код
Sub SENdsfjk2(): Dim Rg1 As Range, kSt&, Tp$
kSt = Cells(Rows.Count, 1).End(xlUp).Row
    Range("A2:B" & kSt).Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
For i = kSt To 3 Step -1
    If Cells(i, 1) = Cells(i - 1, 1) Then
Tp = Cells(i, 1)
If Rg1 Is Nothing Then Set Rg1 = Union(Cells(i, 1), Cells(i - 1, 1)) Else Set Rg1 = Union(Rg1, Cells(i - 1, 1))
    Else
If Not Rg1 Is Nothing Then Rg1.ClearContents:  Rg1.Merge: Rg1.Value = Tp: Set Rg1 = Nothing
If i > 3 Then Rows(i).Insert
    End If
Next i
If Not Rg1 Is Nothing Then Rg1.ClearContents:  Rg1.Merge: Rg1.Value = Tp
End Sub

Изменено: Евгений Смирнов09.04.2021 15:38:32

 

БМВ

Модератор

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

Excel 2013, 2016

#8

09.04.2021 11:42:03

Цитата
Евгений Смирнов написал:
Оказывается макрорекордер в Excel 2010 пишет кучу лишнего.

нет зависимости от версии.

По вопросам из тем форума, личку не читаю.

 

buchlotnik

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

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

Excel 365 Бета-канал

del

Изменено: buchlotnik23.08.2021 15:37:09

Соблюдение правил форума не освобождает от модераторского произвола
<#0>

 

msi2102

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

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

Можно ещё так:

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

  • пример.xlsm (24.25 КБ)

Изменено: msi210209.04.2021 13:33:32

 

Евгений Смирнов

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

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

#11

09.04.2021 15:46:16

БМВ

Цитата
нет зависимости от версии.

Сортировка столбца В одного и того же файла записанного макрорекордером
Excel 2002

Код
Sub Макрос1()
' Макрос1 Макрос
' Макрос записан 09.04.2021 (SEN)
    Range("A1:B10").Sort Key1:=Range("B2"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub

Excel 2010

Код
Sub Макрос1()
' Макрос1 Макрос
    ActiveWorkbook.Worksheets("Лист2").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Лист2").Sort.SortFields.Add Key:=Range("B2"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Лист2").Sort
        .SetRange Range("A2:B10")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveWorkbook.RunAutoMacros Which:=xlAutoClose
End Sub

Программный код полностью идиентичен. Можно даже не сравнивать.

Изменено: Евгений Смирнов09.04.2021 15:50:56

 

vikttur

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

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

Евгений Смирнов, а нужны ли все параметры, которые выдал макрорекодер в 2002 (и такие динозавры используются?)? Нужна ли строка комментария ‘ Макрос1 Макрос?
Речь о том, что  при автозаписи в любой версии пишется много чего лишнего. Попробуйте записать значение в ячейку. В 2002 лишних Select‘ов не будет?

И я не уверен, что фильтрация, записанная в 2010, нормально отработает в 2002

 

Андрей Кольчурин

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

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

#13

09.04.2021 17:29:59

Цитата
Евгений Смирнов написал: Автор еще хотел добавить пустые строки…

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

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

  • пример.xlsm (17.39 КБ)

Изменено: Андрей Кольчурин09.04.2021 17:34:07

 

Евгений Смирнов

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

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

#14

09.04.2021 18:41:23

Андрей Кольчурин

, да, Вы правы, на этом файле отработал некорректно.
Исправил, вроде теперь правильно

Код
Sub SENdsfjk2(): Dim Rg1 As Range, kSt&, Tp$
kSt = Cells(Rows.Count, 1).End(xlUp).Row
Range("A2:B" & kSt).Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range( _
        "B2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _
        :=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
        DataOption2:=xlSortNormal
For i = kSt To 3 Step -1
    If Cells(i, 1) = Cells(i - 1, 1) Then
Tp = Cells(i, 1)
If Rg1 Is Nothing Then Set Rg1 = Union(Cells(i, 1), Cells(i - 1, 1)) Else Set Rg1 = Union(Rg1, Cells(i - 1, 1))
    Else
If Not Rg1 Is Nothing Then Rg1.ClearContents:  Rg1.Merge: Rg1.Value = Tp: Set Rg1 = Nothing
If i > 3 Then Rows(i).Insert
    End If
Next i
If Not Rg1 Is Nothing Then Rg1.ClearContents:  Rg1.Merge: Rg1.Value = Tp
End Sub

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

  • пример1234.xlsm (17.3 КБ)

 

Но теперь почему то не сортируется по размеру групп.

https://yadi.sk/i/qkWc32kk_ZKFUg

Изменено: Андрей Кольчурин09.04.2021 20:38:28

 

Mershik

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

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

Андрей Кольчурин, попробуйте так (скорее всего, что-то упустил)
 

Не бойтесь совершенства. Вам его не достичь.

 

Евгений Смирнов

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

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

#17

10.04.2021 07:23:16

По убыванию количества в группе

Код
Sub SENdsfjk3(): Dim Rg1 As Range, kSt&, Tp$
kSt = Cells(Rows.Count, 1).End(xlUp).Row
Tp = "=COUNTIF(R2C1:R" & kSt & "C1,R2C1:R" & kSt & "C1)"
Set Rg1 = Range(Cells(2, 3), Cells(kSt, 3)): Rg1.FormulaR1C1 = Tp
Range("A2:C" & kSt).Sort Key1:=Range("C2"), Order1:=xlDescending, Key2:=Range("A2"), _
Order2:=xlAscending, Key3:=Range("B2"), Order3:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
        DataOption2:=xlSortNormal, DataOption3:=xlSortNormal
Rg1.Value = Empty: Set Rg1 = Nothing
For i = kSt To 3 Step -1
    If Cells(i, 1) = Cells(i - 1, 1) Then
Tp = Cells(i, 1)
If Rg1 Is Nothing Then Set Rg1 = Union(Cells(i, 1), Cells(i - 1, 1)) Else Set Rg1 = Union(Rg1, Cells(i - 1, 1))
    Else
If Not Rg1 Is Nothing Then Rg1.ClearContents:  Rg1.Merge: Rg1.Value = Tp: Set Rg1 = Nothing
If i > 3 Then Rows(i).Insert
    End If
Next i
If Not Rg1 Is Nothing Then Rg1.ClearContents:  Rg1.Merge: Rg1.Value = Tp
End Sub

По возрастанию в файле

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

  • пример1234.xlsm (20.49 КБ)

 

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

 

Евгений Смирнов

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

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

#19

10.04.2021 08:58:51

Найдите эти 3 записи в коде и удалите их

Код
 Key3:=Range("B2") Order3:=xlAscending DataOption3:=xlSortNormal

Изменено: Евгений Смирнов10.04.2021 08:59:34

 

Евгений Смирнов, Спасибо, с сортировкой все хорошо. Но возник ещё один вопрос — как сделать чтобы при сортировке обрабатывались более двух столбцов?
Вот пример таблицы из 5-и столбцов. Хотелось бы чтобы макрос корректно обработал всю таблицу.

 

buchlotnik

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

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

Excel 365 Бета-канал

#21

10.04.2021 10:14:55

Цитата
Андрей Кольчурин написал:
возник ещё один вопрос

с учётом растуще-меняющихся хотелок — чем PQ не устроил?

Соблюдение правил форума не освобождает от модераторского произвола
<#0>

 

buchlotnik, с PQ к сожалению для меня сложнее разобраться, макросы привычнее.

Изменено: Андрей Кольчурин10.04.2021 10:37:26

 

buchlotnik

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

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

Excel 365 Бета-канал

del

Изменено: buchlotnik23.08.2021 15:36:53

Соблюдение правил форума не освобождает от модераторского произвола
<#0>

 
Андрей Кольчурин

Мне интересно вы меня к чемпионату мира по программированию натаскиваете?(У вас хотелки часто меняются и задание по ночам правите 9 апр 2021 01:59:46) Хочу вас разочаровать я не смогу его выиграть. Вам не понравилось в последнем коде, что я в 3 столбец формулы запихнул, но во всех ваших файлах было 2 столбца данных. Можно сделать по другому добавить столбец туда формулы отсортировать потом удалить его, но подозреваю, что вам потом захочется, чтобы отсортировать 5 или 10 столбцов, а я пока прочитал справку по методу Sort в старом Excel там сортировка только по 3 ключам (3 столбцам), в новом больше поэтому и макрорекордер пишет по разному. Спасибо что подтолкнули меня почитать справку( без конкретного задания не хочется) Иду читать справку.по методу Sort в новом Excel

Изменено: Евгений Смирнов11.04.2021 05:29:46

 

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

 

Евгений Смирнов

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

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

#26

11.04.2021 19:09:03

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

Код
Sub SENdsfjk4(): Dim Rg1 As Range, kSt&, Tp$
kSt = Cells(Rows.Count, 1).End(xlUp).Row
Tp = "=COUNTIF(R2C2:R" & kSt & "C2,R2C2:R" & kSt & "C2)": Columns(1).Insert
Set Rg1 = Range(Cells(2, 1), Cells(kSt, 1)): Rg1.FormulaR1C1 = Tp
Range("A2:G" & kSt).Sort Range("A2"), 2, Range("B2"), , 1, , , 0, , 0 ' По убыванию кол-ва в группе
'Range("A2:C" & kSt).Sort Range("A2"), 1, Range("B2"), , 1, , , 0, , 0 ' По возрастанию кол-ва в группе
Columns(1).Delete: Set Rg1 = Nothing
For i = kSt To 3 Step -1
    If Cells(i, 1) = Cells(i - 1, 1) Then
Tp = Cells(i, 1)
If Rg1 Is Nothing Then Set Rg1 = Union(Cells(i, 1), Cells(i - 1, 1)) Else Set Rg1 = Union(Rg1, Cells(i - 1, 1))
    Else
If Not Rg1 Is Nothing Then Rg1.ClearContents:  Rg1.Merge: Rg1.Value = Tp: Set Rg1 = Nothing
If i > 3 Then Rows(i).Insert
    End If
Next i
If Not Rg1 Is Nothing Then Rg1.ClearContents:  Rg1.Merge: Rg1.Value = Tp
End Sub

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

  • пример 3331.xlsm (20.57 КБ)

Изменено: Евгений Смирнов12.04.2021 06:41:51

 

Андрей Кольчурин

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

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

#27

11.04.2021 19:37:13

Евгений Смирнов, Проверил, всё работает четко, проблем не обнаружил. Как я понял, можно расширять диапазон столбцов до любого количества?

https://yadi.sk/i/qqcV6CXGFaQU6A

Спасибо) напишите в личку куда вам скинуть копеечку.

Понравилась статья? Поделить с друзьями:
  • Сортировка в excel по значению одного столбца
  • Сортировка в excel по значению в ячейке excel
  • Сортировка в excel по заливке
  • Сортировка в excel по должности
  • Сортировка в excel по датам от меньшего к большему