Забыли поздравить коллегу с днём рождения? 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-менеджеров или руководителей, которые следят за днями рождения большой команды.
Метод 1: Условное форматирование для визуальных подсказок
Самый простой способ — выделить ячейки с приближающимися датами цветом. Это не отправляет уведомлений, но позволяет быстро сканировать таблицу.
Допустим, у вас есть столбец A с именами и столбец B с датами рождения (в формате ДД.ММ.ГГГГ). Чтобы выделить дни рождения, которые наступят в течение следующих 7 дней:
- Выделите диапазон с датами (например,
B2:B100). - Перейдите на вкладку
Главная → Условное форматирование → Создать правило. - Выберите
Использовать формулу для определения форматируемых ячеек. - Введите формулу:
=И(B2<>""; (B2-СЕГОДНЯ())<=7; (B2-СЕГОДНЯ())>=0) - Настройте формат (например, красный фон или жирный шрифт).
Теперь все даты, которые наступят в течение недели, будут подсвечены. Чтобы учесть только месяц и день (игнорируя год), используйте формулу с функцией ДАТАМЕС:
=И(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) позволяет создавать динамические отчёты с напоминаниями. Этот метод полезен, если вы ведёте большую базу (например, для всей компании).
Алгоритм действий:
- Преобразуйте ваш список в «умную таблицу» (
Вставка → Таблица). - Перейдите на вкладку
Данные → Получить данные → Из других источников → Пустая запрос. - В редакторе 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
Отфильтровано
- Нажмите
Закрыть и загрузить— на новом листе появится список ближайших дней рождения.
Преимущество метода: отчёт обновляется при каждом открытии файла. Можно настроить автоматическую отправку email через Power Automate (см. Метод 5).
Метод 4: VBA-скрипт для всплывающих напоминаний
Для пользователей, готовых к автоматизации, VBA (Visual Basic for Applications) позволяет создавать всплывающие окна с напоминаниями при открытии файла.
Как настроить:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте новый модуль (
Insert → Module). - Скопируйте код:
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
- Чтобы скрипт запускался автоматически, вставьте в модуль
ThisWorkbook:Private Sub Workbook_Open()ПроверкаДнейРождения
End Sub
⚠️ Внимание: VBA-макросы блокируются по умолчанию в файлах, полученных из интернета. Чтобы разрешить выполнение, перейдите в Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы (не рекомендуется для недоверенных файлов!).
Метод 5: Интеграция с Outlook и Power Automate
Если вы используете Microsoft 365, можно настроить автоматическую отправку email или создание событий в Outlook через Power Automate (ранее Microsoft Flow).
Пошаговая инструкция:
- Сохраните файл с днями рождения в OneDrive или SharePoint.
- Перейдите на сайт Power Automate и создайте новый поток (
Автоматизированный облачный поток). - Выберите триггер
Excel Online (Business) → Когда изменяется файл в папке. - Добавьте действие
Excel Online (Business) → Список строк в таблицеи укажите путь к вашему файлу. - Добавьте условие (
Control → Condition) с проверкой:daysBetween(triggerOutputs()?['body/lastModifiedDateTime'], items('Apply_to_each')?['ДатаРождения']) <= 7 - В ветке
Если дадобавьте действиеOutlook → Отправить emailилиOutlook → Создать событие.
Пример настройки email:
- 📧 Кому: ваш email (или email получателя).
- 📝 Тема:
Напоминание: День рождения [Имя] через [ДнейДоДР] дней. - 📄 Текст:
Не забудьте поздравить [Имя]! Дата рождения: [ДатаРождения].
⚠️ Внимание: Бесплатная версия Power Automate ограничивает количество запусков потока (до 750 в месяц). Для больших команд может потребоваться платная подписка.
Как экспортировать дни рождения в Google Calendar
Если вы предпочитаете Google Calendar, можно перенести данные из Excel в формате .ics:
- Добавьте в таблицу столбец с формулой для генерации
DATEв форматеYYYYMMDD:=ТЕКСТ(B2; "ГГГГММДД") - Создайте текстовый файл с расширением
.icsи вставьте шаблон:BEGIN:VCALENDARVERSION: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
- Импортируйте файл в 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 — нет, но можно использовать обходные пути:
- Настройте Power Automate для отправки SMS через Twilio или Telegram Bot.
- Экспортируйте данные в Google Sheets и используйте Apps Script с интеграцией SMS-шлюза.
- Используйте VBA для отправки email на номер телефона (например,
79123456789@sms.beeline.ruдля Билайна).