Как правильно высчитать срок годности в Excel: формулы, шаблоны и лайфхаки

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

Многие пользователи ошибочно думают, что достаточно просто вычесть даты — но это работает только для статичных данных. На практиже нужно учитывать динамические даты (например, "сегодня"), условное форматирование для визуального контроля, а также особенности хранения (например, "годен в течение 6 месяцев с даты производства"). В этой статье разберём 3 метода расчёта — от базового до продвинутого — с готовыми формулами и шаблонами.

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

  • 📅 Считать оставшиеся дни до истечения срока
  • 🚨 Выделять просроченные товары красным цветом
  • 📊 Сортировать продукцию по приоритету реализации
  • 📤 Экспортировать отчёты для проверок
📊 Как вы сейчас контролируете сроки годности?
Вручную в блокноте
В Excel без формул
Специализированная программа
Не контролирую

1. Базовый метод: вычитание дат

Самый простой способ — вычесть из даты истечения срока годности текущую дату. Для этого используем формулу:

=ДАТА.ГОД(сегодня(); год_истечения; месяц_истечения) - СЕГОДНЯ()

Но на практике удобнее хранить дату истечения в одной ячейке (например, A2). Тогда формула упрощается:

=A2 - СЕГОДНЯ()

Эта формула вернёт количество дней до истечения срока. Если значение отрицательное — товар просрочен. Чтобы избежать ошибок:

  • 📌 Используйте формат ячейки Общий или Числовой для результата
  • 📌 Убедитесь, что даты введены корректно (Excel распознаёт их как числа)
  • 📌 Для дат в текстовом формате (например, "31.12.2026") используйте =ДАТАЗНАЧ(A2)
⚠️ Внимание: Формула СЕГОДНЯ() пересчитывается при каждом открытии файла. Если вам нужно зафиксировать дату проверки, используйте CTRL + ; для вставки статичной даты.
Тип товара Дата производства Срок годности (дней) Дата истечения Дней до просрочки
Йогурт 15.05.2026 30 =A2+B2 =C2-СЕГОДНЯ()
Мука 10.03.2026 180 =A3+B3 =C3-СЕГОДНЯ()
Консервы 05.01.2026 720 =A4+B4 =C4-СЕГОДНЯ()

2. Расчёт по дате производства + срок хранения

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

=ДАТАМЕС(дата_производства; количество_месяцев)

Пример для товара со сроком хранения 6 месяцев:

=ДАТАМЕС(A2; 6)

Для дней используйте простое сложение:

=A2 + 30  // для 30 дней

Комбинируем с предыдущей формулой, чтобы получить дни до истечения:

=ДАТАМЕС(A2; B2) - СЕГОДНЯ()

Где A2 — дата производства, B2 — срок в месяцах.

Указать дату производства в формате ДД.ММ.ГГГГ

Преобразовать срок хранения в дни/месяца (например, 1 год = 12 месяцев)

Использовать ДАТАМЕС() для месяцев или простое сложение для дней

Вычесть СЕГОДНЯ() для получения оставшихся дней

Применить условное форматирование для просроченных товаров-->

⚠️ Внимание: Функция ДАТАМЕС() может давать неточности при работе с концами месяцев. Например, 31 января + 1 месяц = 28 февраля. Для критических расчётов используйте альтернативу: =A2 + (B2*30) (где B2 — срок в месяцах).

3. Условное форматирование для визуального контроля

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

  1. Выделите столбец с днями до истечения срока
  2. Перейдите на вкладку Главная → Условное форматирование → Правила выделения ячеек
  3. Выберите "Меньше чем" и укажите значение 0
  4. Задайте красный цвет текста или заливки
  5. Добавьте второе правило для значений "между 0 и 7" с жёлтой заливкой (предупреждение)

Для более гибкой настройки используйте формулы в условном форматировании:

  • 🔴 Просрочка: =A1<СЕГОДНЯ()
  • 🟡 Предупреждение (менее 7 дней): =И(A1>=СЕГОДНЯ(); A1-СЕГОДНЯ()<=7)
  • 🟢 Норма: =A1>СЕГОДНЯ()+7

4. Работа с нестандартными сроками годности

Некоторые товары имеют плавающие сроки хранения. Например:

  • 🥛 Молочные продукты: "годен 5 дней с момента вскрытия упаковки"
  • 💊 Лекарства: "использовать в течение 28 дней после первого открытия"
  • 🍷 Вино: "срок хранения после розлива — 3 года"

Для таких случаев потребуется дополнительный столбец с датой вскрытия/розлива. Формула примет вид:

=ЕСЛИ(дата_вскрытия<>""; дата_вскрытия + срок_после_вскрытия; дата_производства + общий_срок)

Пример для йогурта (общий срок 30 дней, после вскрытия — 5 дней):

=ЕСЛИ(C2<>""; C2+5; A2+30)

Где:

  • A2 — дата производства
  • B2 — общий срок (30 дней)
  • C2 — дата вскрытия (если указана)
Как учитывать выходные дни в расчётах?

Если вам нужно игнорировать выходные при подсчёте рабочих дней до истечения срока, используйте функцию ЧИСТРАБДНИ():

=ЧИСТРАБДНИ(СЕГОДНЯ(); дата_истечения)

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

5. Автоматизация с помощью Power Query

Для крупных баз данных (тысячи позиций) ручной ввод формул неэффективен. Power Query позволяет:

  1. Импортировать данные из , SQL или внешних файлов
  2. Автоматически рассчитывать сроки годности при обновлении
  3. Объединять данные из нескольких источников

Алгоритм настройки:

  1. Перейдите на вкладку Данные → Получить данные → Из таблицы/диапазона
  2. В редакторе Power Query добавьте пользовательский столбец с формулой:
    = Date.From([Дата_производства]) + #duration(30,0,0,0)  // для 30 дней
  3. Загрузите данные обратно в Excel

Преимущество этого метода — формулы не замедляют работу файла, так как все вычисления происходят при загрузке данных.

6. Интеграция с уведомлениями (VBA)

Для полностью автоматической системы можно настроить VBA-скрипт, который будет:

  • 📧 Отправлять email при появлении просроченных товаров
  • 🔔 Выводить всплывающее окно с предупреждением
  • 📥 Экспортировать отчёт в PDF по расписанию

Пример кода для проверки просрочки (вставляйте в модуль ThisWorkbook):

Private Sub Workbook_Open()

Dim ws As Worksheet

Dim lastRow As Long, i As Long

Dim expiryDate As Date, daysLeft As Long

Dim warningMsg As String

Set ws = ThisWorkbook.Sheets("Склад") ' имя вашего листа

lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

For i = 2 To lastRow ' предполагаем, что заголовки в 1 строке

expiryDate = ws.Cells(i, 3).Value ' столбец с датой истечения

daysLeft = expiryDate - Date

If daysLeft < 0 Then

warningMsg = warningMsg & "Просрочен: " & ws.Cells(i, 1).Value & " (ячейка A" & i & ")" & vbCrLf

End If

Next i

If warningMsg <> "" Then

MsgBox "ВНИМАНИЕ! На складе просроченные товары:" & vbCrLf & warningMsg, vbCritical, "ПРОСРОЧКА"

End If

End Sub

⚠️ Внимание: Макросы работают только в файлах с расширением .xlsm. Перед использованием включите поддержку макросов в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов.

7. Типичные ошибки и как их избежать

Даже опытные пользователи Excel допускают ошибки при работе со сроками годности. Рассмотрим топ-5 проблем:

Ошибка Причина Решение
Неправильный формат даты Excel воспринимает дату как текст Используйте ДАТАЗНАЧ() или форматируйте ячейку как Дата
Отрицательные дни Формула не учитывает текущую дату Добавьте ЕСЛИ(результат<0; "Просрочено"; результат)
Не обновляются данные Формулы не пересчитываются Нажмите F9 или проверьте настройки вычислений в Формулы → Параметры вычислений
Ошибка #ЗНАЧ! Пустые ячейки в расчётах Используйте ЕСЛИОШИБКА() или ЕПУСТО()
Некорректный срок в месяцах ДАТАМЕС() не учитывает разную длину месяцев Замените на =ДАТА(ГОД(A2); МЕСЯЦ(A2)+B2; ДЕНЬ(A2))

Чтобы минимизировать ошибки:

  • 🔄 Всегда тестируйте формулы на 2-3 примерах перед массовым применением
  • 📊 Используйте Проверку данных (вкладка Данные) для ограничения ввода дат
  • 🔍 Регулярно проверяйте файлы на наличие #ЗНАЧ! и #ДЕЛ/0!

FAQ: Частые вопросы по расчёту сроков годности

Как рассчитать срок годности, если он указан в виде "годен до конца месяца"?

Используйте функцию КОНМЕСЯЦА():

=КОНМЕСЯЦА(дата_производства; количество_месяцев)

Пример: для товара, годного 3 месяца с 15.05.2026, формула будет =КОНМЕСЯЦА(A2; 3), что вернёт 31.08.2026.

Можно ли автоматически отправлять email о просрочке?

Да, с помощью VBA и Outlook. Пример кода:

Sub SendExpiryEmail()

Dim OutApp As Object, OutMail As Object

Set OutApp = CreateObject("Outlook.Application")

Set OutMail = OutApp.CreateItem(0)

With OutMail

.To = "sklad@company.ru"

.Subject = "Просроченные товары на складе"

.Body = "Список просроченных позиций прилагается." & vbCrLf & _

"Срочно принять меры!"

.Attachments.Add ThisWorkbook.FullName

.Send ' или .Display для ручной отправки

End With

End Sub

⚠️ Для работы этого кода должен быть установлен Microsoft Outlook.

Как учитывать рабочие и выходные дни при расчёте?

Используйте комбинацию функций ЧИСТРАБДНИ() и РАБДЕНЬ():

  • Для подсчёта рабочих дней до истечения: =ЧИСТРАБДНИ(СЕГОДНЯ(); дата_истечения)
  • Для расчёта даты истечения с учётом только рабочих дней: =РАБДЕНЬ(дата_производства; срок_в_днях)

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

=ЧИСТРАБДНИ(СЕГОДНЯ(); дата_истечения; Праздники!A2:A10)
Как сделать, чтобы срок годности автоматически обновлялся при изменении даты производства?

Используйте зависимые формулы и настройте автоматический пересчёт:

  1. Перейдите в Формулы → Параметры вычислений → Автоматически
  2. Убедитесь, что дата производства вводится как дата (не текст)
  3. Свяжите дату истечения с датой производства формулой (например, =A2+30)

Если формулы не обновляются, нажмите F9 или Shift + F9 (пересчёт текущего листа).

Можно ли импортировать данные о сроках годности из 1С или другой программы?

Да, с помощью Power Query:

  1. Экспортируйте данные из 1С в Excel, CSV или XML
  2. В Excel перейдите в Данные → Получить данные → Из файла и выберите источник
  3. В Power Query преобразуйте данные (при необходимости измените формат дат)
  4. Добавьте столбец с расчётом срока годности (как описано в разделе 5)
  5. Загрузите данные в Excel и настройте автоматическое обновление

Для регулярного импорта используйте Параметры → Свойства связи → Обновлять каждые X минут.