Перейти к содержимому

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

    Сортировка по дням рождения списка сотрудников с помощью VBA Excel. Предназначена для отслеживания дней рождения по порядку в течение текущего года.

    Зачем нужна сортировка по дням рождения?

    Справка

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

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

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

    Почему не подходит обычная сортировка?

    Стандартная сортировка Excel по столбцу «Дата рождения» не решает задачу, так как в данном случае сортировка осуществляется по полной дате, включая год. В результате сотрудники выстраиваются в новый список не только по дням и месяцам, но и по году рождения.

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

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

    Постановка задачи

    Если компания ведёт учёт сотрудников в Excel, то список может выглядеть следующим образом (в упрощённом виде, конечно):

    Примерный список сотрудников

    Необходимо с помощью VBA отсортировать список работников компании по дням рождения в течение одного года.

    Подход к решению

    Оптимальный способ — временно привести все даты к одному году (например, 2000), сохранив только месяц и день.

    Почему именно 2000? Это високосный год, который универсально подходит для любых дат (корректно обрабатывается 29 февраля).

    Алгоритм работы макроса будет следующим:

    1. Копирование имён сотрудников и их дней рождения на отдельный лист.
    2. Преобразование дат так, чтобы год стал фиксированным (2000) для всех работников.
    3. Выполнение сортировки.
    4. Отображение дат в удобном формате (например, «15 марта 1986»).

    Исходный лист: «Сотрудники», лист назначения с результатами сортировки: «Дни рождения» (добавлен в книгу заранее).

    VBA-код решения

    Откройте редактор VBA (Alt + F11), создайте модуль и вставьте следующий код:

    Что делает макрос

    • Копирует столбцы «Дата рождения» и «ФИО» на лист «Дни рождения».
    • Копирует даты в столбец «C», заменив годы рождения на 2000.
    • Сортирует сотрудников по вспомогательному столбцу «C».
    • Удаляет столбец «C» и приводит формат отображения дат рождения к удобному виду.

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

    Результат работы кода

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

    Возможные расширения

    Для более продвинутой автоматизации можно:

    • добавить автоматический запуск при открытии книги;
    • реализовать фильтрацию по текущему месяцу;
    • настроить подсветку ближайших дней рождения;
    • добавить колонку с возрастом;
    • интегрировать макрос с Outlook для автоматической отправки поздравлений.

    Сортировка сотрудников по дням рождения без учёта года — типичная задача кадрового и административного учёта. Использование VBA Excel позволяет решить её корректно и полностью автоматизировать процесс.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.