Разделительная линия между наборами строк
Если у вас есть большой отсортированный по какому-либо столбцу список, то было бы неплохо автоматически отделять получившиеся наборы строк разделительными горизонтальными линиями для наглядности:
В приведенном выше примере – это линии между странами, но, в общем случае, между любыми повторяющимися элементами в одном столбце. Давайте рассмотрим несколько способов реализовать такое.
Способ 1. Простой
В самом быстром варианте сделать подобное можно очень легко с помощью условного форматирования, которое будет рисовать нижнюю границу ячеек, если содержимое ячейки в столбце A не равно содержимому следующей ячейки в этой же колонке. Выделите все ячейки в таблице кроме шапки и выберите на Главной вкладке команду Условное форматирование – Создать правило (Home – Conditional Formatting - New Rule). Выберите тип правила Использовать формулу для определения форматируемых ячеек (Use formula to determine which cells to format) и введите в поле следующую формулу:
Обратите внимание на доллары в адресах для закрепления букв столбцов, но не номеров строк, т.к. мы сравниваем только страны из столбца А. Пробелов в формуле быть не должно.
Нажмите на кнопку Формат (Format) и в открывшемся окне на вкладке Граница (Borders) включите линию нужного цвета на нижней границе. После нажатия на ОК наше правило заработает и между группами строк появятся горизонтальные отчеркивающие линии
Способ 2. С поддержкой фильтра для чисел и дат
Небольшой, но весьма ощутимый недостаток первого способа состоит в том, что такие границы не всегда будут корректно работать при фильтрации списка по другим столбцам. Так, например, если отфильтровать нашу таблицу по датам (только январь), то линии будут видны уже не между всеми странами, как раньше:
Выкрутиться в таком случае можно, используя функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ (SUBTOTAL), которая умеет выполнять различные математические операции (сумму, среднее, количество и т.д.), но "видеть" при этом только отфильтрованные ячейки. Для примера, отсортируем нашу таблицу по последнему столбцу с датой и проведем разделительную линию между днями. В условном форматировании придется создать похожее на первый способ правило, но использовать при этом не прямые ссылки в сравнении ячеек D2 и D3, а заключить их как аргументы в функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ:
Первый аргумент функции (число 109) - это код операции суммирования. На самом деле мы здесь ничего не складываем и делаем, по сути, тупую операцию типа СУММ(D2), которая, конечно же, равна D2. Но от СУММ эта функция отличается как раз тем, что производит действия только над видимыми ячейками, т.е. и сравниваться будут оставшиеся после фильтра на экране ячейки, что мы и хотели.
Способ 3. С поддержкой фильтра для любых данных
Как легко сообразить, у второго способа тоже есть недостаток: функцию суммирования можно применять только к числам или датам (которые тоже в Excel представляют из себя числа), но не к тексту. Т.е., если нам захочется провести линию между странами, как в первом способе, но так, чтобы она корректно отображалась и после фильтрации, то придется использовать существенно более сложный путь. Выделите еще раз всю таблицу кроме шапки, создайте новое правило на основе формулы и введите следующую конструкцию в поле проверки:
=СУММПРОИЗВ(ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103;СМЕЩ($A$1:$A2;СТРОКА($A$1:$A2)-МИН(СТРОКА($A$1:$A2));;1));--($A$1:$A2=$A2))=1
В английской версии это будет:
=SUMPRODUCT(SUBTOTAL(103;OFFSET($A$1:$A2;ROW($A$1:$A2)-MIN(ROW($A$1:$A2));;1));--($A$1:$A2=$A2))=1
Нажав на кнопку Формат (Format) задайте обрамление красной линией сверху и нажмите ОК. Получившееся разделение по странам будет корректно работать даже после фильтрации, например, по дате:
Ссылки по теме
- Подсветка дат и сроков с помощью условного форматирования
- Как Excel на самом деле работает с датами и временем
- Как использовать условное форматирование для подсветки ячеек по условию в Excel
Третий способ действительно универсальный и может очень полезным для таблиц с данными. Правда, если в таблице будет слишком много записей (к примеру, десятки тысяч), то такое форматирование существенно замедлит работу с файлом
Небольшое уточнение для способа № 3 – в английской версии следует писать SUBTOTAL вместо SUBTOTALS
Насчет торможения на большом файле вы совершенно правы - третий способ, по сути, является формулой массива, хоть и вводится без фигурных скобок. Но, с другой стороны, кому нужны такие линии в файле со 100 тыс. строк? Кто-то будет его глазами просматривать? Обычно такого размера таблицы являются источником данных для анализа (сводных и т.п.) и редко кто с ними вручную работает.
Если такая опция есть в PLEX то подскажите где ее активировать
Я попробовал универсальный способ в Вашем примере. Отсортировал (на вкладке универсально) по дате от старых к новым. Увидел, что ни в одной колонке разделители не стоят как задумано
Спасибо!
Бывает, что необходимо сделать подобное разделение по данным НЕСКОЛЬКИХ столбцов.
Для варианта 1 это делается очень просто. Формула будет такой =СЦЕПИТЬ($A2;$B2)<>СЦЕПИТЬ($A3;$B3)
Николай,
для варианта 2 и 3 подобное возможно?
Подскажите пож-та, как сделать что бы группы заливались цветом. (чередовались цвета).
1-ая Серая
2-ая Белая
3-ая Серая
4-ая Белая
.....
Благодарю.
Подскажите, пожалуйста, в моей таблице блоки имеют определенный ID, например, #01/1, #01/2 и так далее. Можно ли сделать разделение между #01/1.... и #02/1?