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

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

Многие пользователи ограничиваются простым вычитанием дат, но это работает только для базовых случаев. Например, если срок годности молока — 5 дней, а сегодня 1 июня, то =A1+5 даст верный результат. Однако что делать, если срок зависит от даты производства (например, "3 месяца с момента изготовления") или нужно учитывать ГОСТ Р 51074-2003, где для некоторых продуктов сроки варьируются в зависимости от сезона? В этой статье разберём реальные кейсы — от простых формул до сложных сценариев с условным форматированием и динамическими диапазонами.

Вы научитесь:

  • 📅 Создавать формулы для фиксированных и плавающих сроков годности
  • ⚙️ Настраивать автоматические уведомления о приближении истечения срока
  • 📊 Визуализировать данные с помощью условного форматирования
  • 🔄 Учитывать выходные, праздники и особенности хранения
📊 Как вы сейчас контролируете сроки годности?
Вручную в блокноте
В Excel без формул
Специализированное ПО
Другие способы

1. Базовые формулы для расчёта срока годности

Начнём с простейшего варианта: у вас есть дата производства (Дата_изготовления) и фиксированный срок хранения в днях. Например, йогурт хранится 14 дней. Формула будет такой:

=Дата_изготовления + 14

Но что, если срок указан в месяцах или годах? Здесь важно понимать разницу между функциями =ДАТАМЕС() и простым сложением. Например, для срока "3 месяца":

=ДАТАМЕС(Дата_изготовления; 3)

Функция ДАТАМЕС корректно обрабатывает переходы между месяцами разной длины (например, 31 января + 1 месяц = 28/29 февраля). А вот =Дата_изготовления + 90 (3 месяца ≈ 90 дней) даст неверный результат для января — получится 1 апреля вместо 30 апреля.

Для продуктов со сроком "годен до" (например, "до 15.07.2026") никакие расчёты не нужны — просто введите конечную дату в ячейку. Но если срок зависит от даты вскрытия упаковки (как у некоторых соусов), потребуется дополнительная колонка с датой вскрытия и формула:

=ЕСЛИ(Вскрыт="Да"; Дата_вскрытия+30; Дата_изготовления+180)

2. Учёт выходных и праздников в расчётах

Некоторые продукты (например, свежая рыба) имеют срок годности в рабочих днях. В этом случае используйте функцию =РАБДЕНЬ():

=РАБДЕНЬ(Дата_изготовления; 5)

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

=РАБДЕНЬ(Дата_изготовления; 5; Праздники)

Для России в диапазон Праздники включите:

  • 🎉 1–8 января (Новогодние каникулы)
  • 🎂 23 февраля, 8 марта, 1 мая, 9 мая
  • 🏖️ 12 июня, 4 ноября
Как автоматически обновлять список праздников?

Создайте отдельный лист "Праздники" и используйте Power Query для импорта актуального производственного календаря с сайта КонсультантПлюс или календарь Google через API.

Если ваш склад работает по нестандартному графику (например, 2/2), создайте пользовательскую функцию на VBA или используйте комбинацию =РАБДЕНЬ() с корректировкой через =ЕСЛИ().

3. Динамические сроки годности: когда всё не так просто

Некоторые продукты имеют плавающие сроки годности в зависимости от условий хранения. Например, согласно ГОСТ 31688-2012, срок хранения мороженого при -18°C — 6 месяцев, а при -12°C — всего 3 месяца. В Excel это реализуется через вложенные функции =ЕСЛИ():

=ЕСЛИ(Температура=-18; ДАТАМЕС(Дата_изготовления;6);

ЕСЛИ(Температура=-12; ДАТАМЕС(Дата_изготовления;3);

"Недопустимая температура"))

Для более сложных условий (например, когда срок зависит от влажности, освещения или типа упаковки) используйте таблицу соответствий и функцию =ВПР():

Температура (°C)Влажность (%)Срок (месяцы)
-18<6012
-12<706
-8<753
0Любая1

Формула для ячейки с датой истечения:

=ДАТАМЕС(Дата_изготовления; ВПР(Температура; Таблица_сроков; 3; ЛОЖЬ))

4. Условное форматирование: визуальный контроль сроков

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

  1. Выделите колонку с датой истечения срока годности.
  2. Перейдите на вкладку Главная → Условное форматирование → Правила выделения ячеек.
  3. Выберите "Меньше чем" и введите =СЕГОДНЯ() (для просроченных).
  4. Задайте красный цвет текста или заливки.

Для товаров, у которых осталось менее 7 дней, добавьте второе правило с формулой:

=И(Дата_истечения>СЕГОДНЯ(); Дата_истечения-СЕГОДНЯ()<=7)

Пример цветовой схемы:

  • 🔴 Красный — просрочено (Дата_истечения < СЕГОДНЯ())
  • 🟠 Оранжевый — осталось ≤7 дней
  • 🟡 Жёлтый — осталось ≤30 дней
  • 🟢 Зелёный — срок в норме

Выделить колонку с датами|Создать правило для просроченных товаров|Добавить правило для "осталось ≤7 дней"|Применить цветовую схему|Проверить работу на тестовых данных-->

Для складов с большим ассортиментом удобно добавить колонку "Статус" с формулой:

=ЕСЛИ(Дата_истечения<СЕГОДНЯ(); "Просрочено";

ЕСЛИ(Дата_истечения-СЕГОДНЯ()<=7; "Срочно реализовать";

"В норме"))

5. Автоматические уведомления и отчёты

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

  1. Email-оповещения: Используйте Power Automate (Microsoft) или Apps Script (Google Sheets) для отправки письма со списком просроченных товаров.
  2. Всплывающие напоминания: В Excel создайте правило проверки данных (Данные → Проверка данных) с сообщением "Товар просрочен!".
  3. Отчёты по расписанию: Настройте Power Query для ежедневного обновления данных из 1С или сканера штрихкодов.

Пример кода для Apps Script (Google Sheets), который отправляет email при истечении срока:

function checkExpiryDates() {

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Склад");

var data = sheet.getDataRange().getValues();

var today = new Date();

var message = "";

for (var i = 1; i < data.length; i++) {

if (data[i][2] < today) {

message += "Просрочен: " + data[i][0] + " (истекает " + data[i][2] + ")\n";

}

}

if (message) {

MailApp.sendEmail("sklad@example.com", "Просроченные товары", message);

}

}

Sub ScheduleCheck()

Application.OnTime TimeValue("09:00:00"), "CheckExpiryDates"

End Sub

-->

Для крупных складов интегрируйте Excel с или WMS-системами через ODBC или API. Это позволит:

  • 📤 Автоматически обновлять данные о поступлении/отгрузке
  • 📊 Сверять остатки с фактическим наличием
  • 🔔 Получать уведомления в Telegram или мессенджеры

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

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

⚠️ Внимание: Формат ячеек с датами должен быть Дата, а не Общий или Текст. Иначе формулы =ДАТАМЕС() и =РАБДЕНЬ() вернут ошибку #ЗНАЧ!.

Ошибка 1: Игнорирование временной зоны

Если даты вводятся вручную (например, с клавиатуры как "15.07.2026"), Excel может интерпретировать их как UTC, что приведёт к сдвигу на 3–11 часов для России. Всегда используйте:

  • 📅 Функцию =СЕГОДНЯ() для текущей даты
  • 🕒 Формат ячейки дд.мм.гггг чч:мм для точности

Ошибка 2: Неучёт високосных лет

Формула =Дата_изготовления + 365 даст неверный результат для товара, произведённого 29 февраля 2026 года. Используйте =ДАТАГОД(Дата_изготовления; 1).

⚠️ Внимание: При импорте данных из или сканера штрихкодов даты могут приходить в формате YYYYMMDD (например, "20260715"). Преобразуйте их в нормальный вид с помощью =ДАТА(ЛЕВСИМВ(A1;4); ПСТР(A1;5;2); ПСТР(A1;7;2)).

Ошибка 3: Копирование формул с абсолютными ссылками

Если в формуле используется $A$1 вместо A1, при протягивании вниз она не обновится. Для динамических расчётов всегда проверяйте тип ссылок.

7. Продвинутые техники: сводные таблицы и Power Query

Для анализа больших объёмов данных (например, на распределительном центре) используйте сводные таблицы:

  1. Создайте таблицу с колонками: Наименование, Дата_изготовления, Дата_истечения, Категория (молочные, мясные и т.д.).
  2. Вставьте сводную таблицу (Вставка → Сводная таблица).
  3. Перетащите Категория в поле "Строки", а Дата_истечения — в "Значения" (с операцией "Количество").
  4. Добавьте фильтр по дате: Фильтр по дате → До → Сегодня.

Это позволит быстро увидеть:

  • 📦 Какие категории товаров просрочены чаще всего
  • 📉 Динамику порчи по месяцам (для выявления проблем с логистикой)
  • 🔍 Топ-5 "проблемных" позиций

Для импорта данных из внешних источников (например, SQL-базы или API поставщика) используйте Power Query:

  1. Перейдите на вкладку Данные → Получить данные → Из базы данных.
  2. Выберите источник (например, SQL Server или Из веб).
  3. В редакторе Power Query добавьте столбец с расчётом срока годности:
= Date.AddDays([Дата_изготовления], 30)

После загрузки данных настройте автоматическое обновление (Данные → Обновить все) по расписанию.

8. Готовые шаблоны для разных отраслей

В зависимости от сферы деятельности вам могут понадобиться разные шаблоны Excel. Вот примеры для популярных случаев:

ОтрасльОсобенности шаблонаКлючевые формулы
Пищевая промышленностьУчёт температуры хранения, ГОСТы=ДАТАМЕС(), =ВПР()
ФармацевтикаСроки годности лекарств, серии=РАБДЕНЬ(), =ЕСЛИОШИБКА()
КосметикаСрок после вскрытия (PAO)=ЕСЛИ(Вскрыт="Да"; ...)
Химическая продукцияУчёт агрегатного состояния=И(Условие1; Условие2)

Для пищевой промышленности скачайте шаблон с учётом ГОСТ, где уже прописаны:

  • 🥛 Сроки для молочной продукции (по ГОСТ 31450-2013)
  • 🍗 Мясные изделия (по ГОСТ 31777-2012)
  • 🥖 Хлебобулочные изделия (по ГОСТ 31805-2012)

Для аптек важно учитывать:

  • 💊 Срок годности лекарств (указан на упаковке)
  • 📅 Дату повторной сертификации
  • 🔄 Условия хранения (например, "в защищённом от света месте")

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

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

Используйте функцию =КОНМЕСЯЦА(Дата_изготовления; 0) для текущего месяца или =КОНМЕСЯЦА(Дата_изготовления; Количество_месяцев). Например, для срока "годен до конца текущего месяца + 3 месяца":

=КОНМЕСЯЦА(Дата_изготовления; 3)
❓ Можно ли в Excel учитывать динамические праздники (например, Пасха)?

Да, но потребуется VBA. Создайте функцию для расчёта даты Пасхи (алгоритм Гаусса) и добавьте её в список праздников для =РАБДЕНЬ(). Пример кода:

Function Easter(Y As Integer) As Date

Dim a, b, c, k, p, q, M, N, d, e As Integer

a = Y Mod 19: b = Y \ 100: c = Y Mod 100

k = b \ 4: p = (b + 8) \ 25: q = (b - p + 1) \ 3

M = (15 + b - k - q) Mod 30

N = (4 + b - q) Mod 7

d = (19 * a + M) Mod 30

e = (2 a + 4 b + 6 * d + N) Mod 7

Easter = DateSerial(Y, 3, 22) + d + e + 13

End Function

❓ Как экспортировать данные о сроках годности в 1С?

Используйте Power Query для преобразования данных в формат, совместимый с 1С:

  1. Экспортируйте таблицу в .csv (Файл → Сохранить как → CSV).
  2. В 1С импортируйте через Администрирование → Обмен данными → Импорт из Excel.
  3. Настройте соответствие полей (например, Номенклатура → Наименование, ДатаГодности → Дата_истечения).

Для автоматического обмена настройте COM-соединение или REST API.

❓ Как рассчитать средний остаточный срок годности по складу?

Добавьте колонку с формулой:

=Дата_истечения - СЕГОДНЯ()

Затем используйте =СРЗНАЧ() для расчёта среднего по всем товарам. Чтобы исключить просроченные (они искажают статистику), применяйте:

=СРЗНАЧЕСЛИ(Остаток_дней; ">0")
❓ Можно ли настроить SMS-оповещения о просрочке?

Да, через сервисы вроде Twilio или SMS.ru. Пример интеграции:

  1. Создайте Apps Script в Google Sheets с триггером на ежедневное выполнение.
  2. В скрипте проверяйте даты истечения и формируйте список просроченных товаров.
  3. Отправляйте данные на API SMS-сервиса:
function sendSMS() {

var message = "Просрочено: Товар1, Товар2";

var url = "https://sms.ru/send?api_id=ВАШ_API_KEY&to=79XXXXXXXXX&text=" + encodeURIComponent(message);

UrlFetchApp.fetch(url);

}