Сортировка по дням рождения в Excel

Недавно увидел, как сотрудница отдела кадров вносит дни рождения работников в таблицу Word, создавая отдельные ячейки со списком фамилий для каждого месяца. Я решил помочь ей и отсортировал таблицу в Excel.


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

Сортировка по дням рождения в Excel Microsoft Excel, Таблица, День рождения, Сортировка, Полезное, На заметку, Длиннопост

Для отображения нужного порядка дней рождений сотрудников, нам необходимо сделать маленький приём.


В соседнем столбце используем функцию ТЕКСТ (TEXT), которая представляет числа и даты в заданном формате: =ТЕКСТ(B4;"ММ ДД")

Сортировка по дням рождения в Excel Microsoft Excel, Таблица, День рождения, Сортировка, Полезное, На заметку, Длиннопост

Формат «ММ ДД» означает, что нужно из всей даты отобразить только номер месяца и день.


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

Сортировка по дням рождения в Excel Microsoft Excel, Таблица, День рождения, Сортировка, Полезное, На заметку, Длиннопост

Вспомогательный столбец удаляем. Для большей наглядности можно задать разделительные линии между месяцами.


Выделяем весь список (кроме заголовка) и на вкладке Главная выбираем - Условное форматирование - Создать правило (Home - Conditional formatting - Create Rule). В появившемся окне выбираем - Использовать формулу для определения форматируемых ячеек и вводим формулу: =МЕСЯЦ($B2)<>МЕСЯЦ($B3)


В разделе Формат на вкладке Границы (Borders) выбираем нижнюю границу ячейки, задаём понравившийся цвет линии и убираем лишние знаки доллара в формуле, чтобы закрепить в ней только столбцы.

Сортировка по дням рождения в Excel Microsoft Excel, Таблица, День рождения, Сортировка, Полезное, На заметку, Длиннопост

Также можно на вкладке Вид выбрать Закрепить областиЗафиксировать верхнюю строку и ввести формулу =СЕГОДНЯ() для ежедневного обновления даты и визуального удобства.


P.S. При создании таблицы ни один шрифт не пострадал, только глаза)))

Шрифты для друзей _Arabian, a_Algerius, WienLight, Benguiat Rus, Romic

MS, Libreoffice & Google docs

719 постов15K подписчика

Добавить пост

Правила сообщества

1. Не нарушать правила Пикабу

2. Публиковать посты соответствующие тематике сообщества

3. Проявлять уважение к пользователям

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

По интересующим вопросам можно обратиться к автору поста схожей тематики, либо к пользователям в комментариях


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

Утверждения вроде "пост - отстой", это оскорбление автора и будет наказываться баном.

Вы смотрите срез комментариев. Показать все
1
Автор поста оценил этот комментарий
Кто знает, как в экселе сделать такую штуку - есть ячейка с фамилией именем и отчеством
Петров Иван Андреевич
Как сделать так, чтобы получилось Петров И.А.?
И если три ячейки:
Петров
Иван
Андреевич
Спасибо за ответы
раскрыть ветку (5)
2
Автор поста оценил этот комментарий

Держи по 2 варианта на каждый случай.

1)

- Если ФИО в одной строке и гарантировано есть отчество (ФИО в ячейке A1):

=СЦЕПИТЬ(ЛЕВСИМВ(A1;ПОИСК(" ";A1)+1);". ";СЦЕПИТЬ(ПСТР(A1;ПОИСК(" ";A1;ПОИСК(" ";A1)+1)+1;1);"."))


- Если ФИО в одной строке, но отчества может не быть:

=СЦЕПИТЬ(ЛЕВСИМВ(A2;ПОИСК(" ";A2)+1);".";ЕСЛИ(ЕОШИБКА(ПОИСК(" ";A2;ПОИСК(" ";A2)+1));"";СЦЕПИТЬ(" ";ПСТР(A2;ПОИСК(" ";A2;ПОИСК(" ";A2)+1)+1;1);".")))


2)

- Если ФИО разбито по ячейкам и гарантировано есть отчество (Ф в ячейке A1, Имя в B2, Отчество в B3):

=СЦЕПИТЬ(A3;" ";ЛЕВСИМВ(B3;1);". ";ЛЕВСИМВ(C3;1);".")


- Если ФИО разбито по ячейкам, но отчества может не быть:

=СЦЕПИТЬ(A4;" ";ЛЕВСИМВ(B4;1);".";ЕСЛИ(C4="";"";СЦЕПИТЬ(" ";ЛЕВСИМВ(C4;1);".")))


И ещё, формула для варианта 1) ищет пробелы в ФИО и отделяет по ним, поэтому если в ФИО разделение не пробелами - нужно менять формулу. Если разделяется пробелами, но их может быть несколько между Фамилией и Именем (частое явление, когда копируешь данные из всяких сторонних источников), то лучше убрать их. Как это сделать:

Опять же, несколько вариантов:

1) Поиск и замена: CTRL+H, найти " " (в кавычках 2 пробела), заменить " " (в кавычках 1 пробел), и так несколько раз, пока не будут найдены совпадения. Первый вариант тупой и не ко всем случаям подходит, но понятен.

2) функция =СЖПРОБЕЛЫ(A1), уберёт лишние пробелы внутри, перед и после ФИО. Чаще всего этого хватает.

3) функция =ПОДСТАВИТЬ(A1;СИМВОЛ(7);" "), для пограничных случаев, когда вместо пробелов используются спецсимволы. Где СИМВОЛ(...) преобразует код символа ... в символ, который нужно найти. Чаще всего хватает номеров 7, 10, 13 (если не ошибаюсь, это табуляция и перенос строки)


Может есть более изящные решения, но пользовался всегда этими.

Иллюстрация к комментарию
раскрыть ветку (2)
Автор поста оценил этот комментарий

#comment_171642372 магия мгновенного заполнения Ctrl+E

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Спасибо, я видел ваш комментарий ниже. Это не всегда решение.

1) У меня на работе, например, 2007 - 2010 офисы установлены.

2) Не всегда работа с исходными данными позволяет рядом что-то писать. Хоть это и не проблема, но всё же.

3) Формулы мне больше нравятся в плане предсказуемости и автоматизации. Я не знаю как реализована функция автозополнения и всегда ли она работает корректно (понятно, что её делали люди умнее меня, но всегда есть вероятность, что результат будет не тот. Формулу я могу исправить, автозаполнение - нет.)

4) Ну и пару минусов автозаполнения:

- Результат автозаполнения - статичные данные. Т.е. если добавлю новые фамилии мне нужно каждый раз его запускать (Это основной минус для Внедрённых таблиц [или как они там называются, которые в разделе Вставка/Таблица.], в них можно описывать формулами поведение в разных столбцах и автозаполнение точно не сюда).

- При изменении исходных данных - перезапускать.


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

Автор поста оценил этот комментарий

используйте функции сцепить и пстр :)

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку