Напоминания о днях рождения в Excel: от простых формул до автоматических уведомлений

Забыли поздравить коллегу с днём рождения? Microsoft Excel может стать вашим личным помощником — не только для расчётов, но и для своевременных напоминаний. В отличие от специализированных приложений (вроде Google Calendar или Outlook), таблицы позволяют гибко настраивать логику уведомлений: от простого выделения ячеек до отправки email через Power Automate.

В этой статье разберём 5 рабочих методов — от базовых (для новичков) до продвинутых (с использованием VBA и Power Query). Вы узнаете, как настроить автоматическое оповещение за 3–7 дней до события, создать визуальные подсказки в таблице и даже интегрировать Excel с другими сервисами. Все решения протестированы на Excel 2016–2023 и Office 365, но большинство подойдёт и для старых версий (с оговорками).

⚠️ Важно: Если вы работаете с Excel Online, некоторые функции (например, VBA или Power Query) могут быть ограничены. Проверьте доступность инструментов в вашей версии заранее.

Почему Excel — лучший инструмент для напоминаний о днях рождения

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

  • 📊 Гибкость настройки: можно учитывать не только дату, но и возраст, зодиак, годовщины знакомства и другие параметры.
  • 🔄 Автоматизация: формулы обновляют данные в реальном времени — не нужно вручную пролистывать календарь.
  • 📤 Интеграция: экспорт в Outlook, Google Sheets или отправка уведомлений по email через Power Automate.
  • 💰 Бесплатно: не требует покупки премиум-версий приложений (в отличие от Notion или Trello).

Кроме того, Excel сохраняет историю: вы всегда можете отсортировать список по годам, добавить заметки о подарках или анализировать, сколько раз поздравляли того или иного человека. Это особенно ценно для HR-менеджеров или руководителей, которые следят за днями рождения большой команды.

📊 Как вы обычно отслеживаете дни рождения?
Записываю в блокнот
Использую календарь на телефоне
Доверяю памяти
Пользуюсь Excel/Google Sheets
Другое

Метод 1: Условное форматирование для визуальных подсказок

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

Допустим, у вас есть столбец A с именами и столбец B с датами рождения (в формате ДД.ММ.ГГГГ). Чтобы выделить дни рождения, которые наступят в течение следующих 7 дней:

  1. Выделите диапазон с датами (например, B2:B100).
  2. Перейдите на вкладку Главная → Условное форматирование → Создать правило.
  3. Выберите Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу:
    =И(B2<>""; (B2-СЕГОДНЯ())<=7; (B2-СЕГОДНЯ())>=0)
  5. Настройте формат (например, красный фон или жирный шрифт).

Теперь все даты, которые наступят в течение недели, будут подсвечены. Чтобы учесть только месяц и день (игнорируя год), используйте формулу с функцией ДАТАМЕС:

=И(B2<>""; МЕСЯЦ(B2)=МЕСЯЦ(СЕГОДНЯ()); ДЕНЬ(B2)=ДЕНЬ(СЕГОДНЯ()))
Как учесть високосные годы?

Если в дате рождения указан 29 февраля, Excel автоматически перенесёт его на 1 марта в невисокосные годы. Чтобы этого избежать, используйте формулу:

=И(B2<>""; ДЕНЬ(B2)=29; МЕСЯЦ(B2)=2; ГОД(СЕГОДНЯ())<>ГОД(B2))

и настройте отдельное форматирование для таких случаев.

⚠️ Внимание: Условное форматирование работает только при открытой книге. Если файл закрыт, подсветка исчезнет. Для постоянных уведомлений используйте методы 3–5.

Метод 2: Формулы для расчёта дней до дня рождения

Чтобы увидеть, сколько дней осталось до каждого события, добавьте дополнительный столбец с формулой. Это поможет приоритизировать поздравления (например, отправить открытку заранее для дальних родственников).

В столбце C (рядом с датой рождения) введите:

=ЕСЛИ(B2=""; ""; ЕСЛИ(ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(B2); ДЕНЬ(B2))-СЕГОДНЯ()<0;

ДАТА(ГОД(СЕГОДНЯ())+1; МЕСЯЦ(B2); ДЕНЬ(B2))-СЕГОДНЯ();

ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(B2); ДЕНЬ(B2))-СЕГОДНЯ()))

Формула учитывает:

  • 📅 Если день рождения уже прошёл в этом году — считает дни до следующего года.
  • ⏳ Если дата ещё не наступила — показывает точное количество дней.
  • 🚫 Пропускает пустые ячейки (чтобы избежать ошибок).

Чтобы отобразить результат в читаемом формате (например, «Через 5 дней»), используйте:

=ЕСЛИ(B2=""; ""; "Через " & ТЕКСТ(формула_выше; "0") & " дней")

- Убедитесь, что даты в столбце B в формате ДД.ММ.ГГГГ

- Проверьте, что в настройках Excel установлен русский язык (функции ДАТА, МЕСЯЦ могут отличаться в англоязычных версиях)

- Для дат до 1900 года используйте систему дат 1904 (в настройках книги)

-->

Имя Дата рождения Дней до ДР Статус
Иван Петров 15.05.1985 120 Запланировать подарок
Мария Сидорова 03.11.1990 5 🚨 Срочно!
Алексей Кузнецов 29.02.1988 360 Високосный год

Метод 3: Автоматические уведомления через Power Query

Power Query (доступен в Excel 2016+ и Office 365) позволяет создавать динамические отчёты с напоминаниями. Этот метод полезен, если вы ведёте большую базу (например, для всей компании).

Алгоритм действий:

  1. Преобразуйте ваш список в «умную таблицу» (Вставка → Таблица).
  2. Перейдите на вкладку Данные → Получить данные → Из других источников → Пустая запрос.
  3. В редакторе Power Query введите:
    let
    

    Источник = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],

    ДобавленСтолбец = Table.AddColumn(Источник, "Дней до ДР", each

    let ДатаДР = [Дата рождения],

    ТекущийГод = Date.Year(DateTime.LocalNow()),

    СледующийДР = if Date.Month(DатаДР) > Date.Month(DateTime.LocalNow()) or

    (Date.Month(DатаДР) = Date.Month(DateTime.LocalNow()) and Date.Day(DатаДР) >= Date.Day(DateTime.LocalNow()))

    then Date.From(DateTime.LocalNow()) + #duration(365 * (ТекущийГод - Date.Year(DатаДР)), 0, 0, 0)

    else Date.From(DateTime.LocalNow()) + #duration(365 * (ТекущийГод - Date.Year(DатаДР) + 1), 0, 0, 0)

    in Duration.Days(СледующийДР - DateTime.LocalNow())),

    Отфильтровано = Table.SelectRows(ДобавленСтолбец, each [Дней до ДР] <= 7 and [Дней до ДР] >= 0)

    in

    Отфильтровано

  4. Нажмите Закрыть и загрузить — на новом листе появится список ближайших дней рождения.

Преимущество метода: отчёт обновляется при каждом открытии файла. Можно настроить автоматическую отправку email через Power Automate (см. Метод 5).

Метод 4: VBA-скрипт для всплывающих напоминаний

Для пользователей, готовых к автоматизации, VBA (Visual Basic for Applications) позволяет создавать всплывающие окна с напоминаниями при открытии файла.

Как настроить:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте новый модуль (Insert → Module).
  3. Скопируйте код:
    Sub ПроверкаДнейРождения()
    

    Dim ws As Worksheet

    Dim rng As Range, cell As Range

    Dim daysLeft As Integer

    Dim msg As String

    Set ws = ThisWorkbook.Sheets("Лист1") ' Замените на имя вашего листа

    Set rng = ws.Range("B2:B100") ' Диапазон с датами рождения

    msg = "Напоминания о днях рождения:" & vbCrLf & vbCrLf

    For Each cell In rng

    If Not IsEmpty(cell) Then

    daysLeft = DateDiff("d", Date, DateSerial(Year(Date), Month(cell), Day(cell)))

    If daysLeft < 0 Then daysLeft = daysLeft + 365 ' Если ДР уже прошёл в этом году

    If daysLeft <= 7 And daysLeft >= 0 Then

    msg = msg & "• " & cell.Offset(0, -1).Value & ": через " & daysLeft & " дней (" & Format(cell.Value, "dd.mm.yyyy") & ")" & vbCrLf

    End If

    End If

    Next cell

    If msg <> "Напоминания о днях рождения:" & vbCrLf & vbCrLf Then

    MsgBox msg, vbInformation, "Дни рождения на этой неделе"

    End If

    End Sub

  4. Чтобы скрипт запускался автоматически, вставьте в модуль ThisWorkbook:
    Private Sub Workbook_Open()
    

    ПроверкаДнейРождения

    End Sub

⚠️ Внимание: VBA-макросы блокируются по умолчанию в файлах, полученных из интернета. Чтобы разрешить выполнение, перейдите в Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы (не рекомендуется для недоверенных файлов!).

Метод 5: Интеграция с Outlook и Power Automate

Если вы используете Microsoft 365, можно настроить автоматическую отправку email или создание событий в Outlook через Power Automate (ранее Microsoft Flow).

Пошаговая инструкция:

  1. Сохраните файл с днями рождения в OneDrive или SharePoint.
  2. Перейдите на сайт Power Automate и создайте новый поток (Автоматизированный облачный поток).
  3. Выберите триггер Excel Online (Business) → Когда изменяется файл в папке.
  4. Добавьте действие Excel Online (Business) → Список строк в таблице и укажите путь к вашему файлу.
  5. Добавьте условие (Control → Condition) с проверкой:
    daysBetween(triggerOutputs()?['body/lastModifiedDateTime'], items('Apply_to_each')?['ДатаРождения']) <= 7
  6. В ветке Если да добавьте действие Outlook → Отправить email или Outlook → Создать событие.

Пример настройки email:

  • 📧 Кому: ваш email (или email получателя).
  • 📝 Тема: Напоминание: День рождения [Имя] через [ДнейДоДР] дней.
  • 📄 Текст: Не забудьте поздравить [Имя]! Дата рождения: [ДатаРождения].

⚠️ Внимание: Бесплатная версия Power Automate ограничивает количество запусков потока (до 750 в месяц). Для больших команд может потребоваться платная подписка.

Как экспортировать дни рождения в Google Calendar

Если вы предпочитаете Google Calendar, можно перенести данные из Excel в формате .ics:

  1. Добавьте в таблицу столбец с формулой для генерации DATE в формате YYYYMMDD:
    =ТЕКСТ(B2; "ГГГГММДД")
  2. Создайте текстовый файл с расширением .ics и вставьте шаблон:
    BEGIN:VCALENDAR
    

    VERSION:2.0

    PRODID:-//Your Company//NONSGML v1.0//EN

    BEGIN:VEVENT

    UID:1234567890@example.com

    DTSTAMP:20260501T000000Z

    DTSTART;VALUE=DATE:YYYYMMDD (замените на дату из Excel)

    SUMMARY:День рождения Имя

    DESCRIPTION:Не забудьте поздравить!

    END:VEVENT

    END:VCALENDAR

  3. Импортируйте файл в Google Calendar через Настройки → Импорт и экспорт.

Google Calendar будет ежегодно напоминать о событии. Чтобы добавить уведомление за 3 дня, отредактируйте событие вручную после импорта.

FAQ: Частые вопросы и решения

Можно ли настроить напоминание за месяц до дня рождения?

Да, измените значение в формулах или правилах условного форматирования. Например, для 30 дней используйте:

=И(B2<>""; (B2-СЕГОДНЯ())<=30; (B2-СЕГОДНЯ())>=0)

В VBA или Power Query замените 7 на 30 в условии.

Почему формула показывает отрицательное число дней?

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

Альтернативно, добавьте проверку:

=ЕСЛИ(формула_из_метода_2<0; формула_из_метода_2+365; формула_из_метода_2)
Как добавить возраст человека в напоминание?

Создайте дополнительный столбец с формулой:

=ЕСЛИ(B2=""; ""; ГОД(СЕГОДНЯ())-ГОД(B2)-ЕСЛИ(ИЛИ(МЕСЯЦ(B2)>МЕСЯЦ(СЕГОДНЯ()); И(МЕСЯЦ(B2)=МЕСЯЦ(СЕГОДНЯ()); ДЕНЬ(B2)>ДЕНЬ(СЕГОДНЯ()))); 1; 0))

Чтобы учесть возраст в уведомлении, добавьте его в текст email или всплывающее окно (см. Метод 4).

Работает ли это в Excel для Mac?

Да, но с оговорками:

  • 🍎 VBA поддерживается, но некоторые функции могут отличаться.
  • 🔄 Power Query доступен в Excel 2016+ для Mac, но интерфейс может выглядеть иначе.
  • ⚠️ Условное форматирование с формулами работает стабильно.

Для Power Automate потребуется Microsoft 365 (бесплатная версия не поддерживает Excel Online на Mac).

Можно ли отправлять SMS-напоминания?

Прямо из Excel — нет, но можно использовать обходные пути:

  1. Настройте Power Automate для отправки SMS через Twilio или Telegram Bot.
  2. Экспортируйте данные в Google Sheets и используйте Apps Script с интеграцией SMS-шлюза.
  3. Используйте VBA для отправки email на номер телефона (например, 79123456789@sms.beeline.ru для Билайна).