Как определить квартал по дате в Excel: от простых формул до VBA

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

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

1. Базовый способ: функция МЕСЯЦ и простое деление

Самый очевидный метод — использовать функцию МЕСЯЦ(), которая возвращает номер месяца (от 1 до 12), а затем разделить результат на 3 с округлением вверх. Формула выглядит так:

=ОКРВВЕРХ(МЕСЯЦ(A1)/3;0)

Где A1 — ячейка с датой. Эта формула работает, потому что каждый квартал состоит из 3 месяцев. Например, март (месяц 3) делится на 3 и округляется до 1 (I квартал), а июнь (месяц 6) — до 2 (II квартал).

  • Плюсы: простота, работает во всех версиях Excel, не требует дополнительных настроек.
  • Минусы: не подходит для финансовых годов, начинающихся не с января, или нестандартных кварталов.
  • 🔹 Пример: для даты 15.08.2026 формула вернёт 3 (III квартал).
⚠️ Внимание: Если в ячейке с датой отображается число (например, 45123 вместо 15.08.2026), Excel воспринимает его как количество дней с 1900 года. Перед использованием формулы убедитесь, что формат ячейки — Дата (выделите ячейку → Главная → Формат → Формат ячеек → Дата).
📊 Какой способ определения квартала вы используете чаще?
Формулы Excel
VBA-макросы
Power Query
Ручной ввод
Другой

2. Функция ВЫБОР для гибкого определения кварталов

Если вам нужно не просто номер квартала, а его название (например, "Q1" или "I квартал"), используйте функцию ВЫБОР() в комбинации с МЕСЯЦ(). Формула примет вид:

=ВЫБОР(ОКРВВЕРХ(МЕСЯЦ(A1)/3;0); "I квартал"; "II квартал"; "III квартал"; "IV квартал")

Эта формула возвращает текстовое значение вместо числа. Аналогично можно выводить сокращения ("Q1-Q4") или даже эмодзи (📅📊📈📉), если это уместно в вашем отчёте.

Месяц Номер квартала Формула с ВЫБОР()
Январь-Март 1 "I квартал"
Апрель-Июнь 2 "II квартал"
Июль-Сентябрь 3 "III квартал"
Октябрь-Декабрь 4 "IV квартал"

Для финансового года, начинающегося с июля, измените порядок аргументов в ВЫБОР():

=ВЫБОР(ОКРВВЕРХ(МЕСЯЦ(A1)/3;0); "III квартал"; "IV квартал"; "I квартал"; "II квартал")

3. Продвинутый метод: функция ДАТАМЕС для динамических периодов

Функция ДАТАМЕС() позволяет сдвигать даты на заданное количество месяцев. Это полезно, если кварталы в вашей компании не стандартные. Например, для кварталов 4-4-5 недель (где первый квартал заканчивается в последнюю субботу апреля).

Сначала определите граничные даты кварталов в отдельной таблице, а затем используйте функцию ПРОСМОТР() или ИНДЕКС/ПОИСКПОЗ для сопоставления даты с кварталом. Пример:

=ИНДЕКС($B$2:$B$5; ПОИСКПОЗ(A1; $A$2:$A$5; 1))

Где:

  • $A$2:$A$5 — диапазон с границами кварталов (например, 31.03.2026, 30.06.2026 и т.д.).
  • $B$2:$B$5 — соответствующие номера кварталов.
⚠️ Внимание: При использовании ПОИСКПОЗ с третьим аргументом 1 (приблизительное совпадение) убедитесь, что граничные даты отсортированы по возрастанию. В противном случае Excel может вернуть некорректный результат.
Как рассчитать границы для кварталов 4-4-5 недель?

1. Определите первый день финансового года (например, 1 апреля).

2. Отсчитайте 4 недели вперед — это конец первого квартала.

3. Следующие 4 недели — второй квартал.

4. Оставшиеся дни до конца года (обычно 5 недель) — третий квартал.

5. Используйте функцию ДЕНЬНЕД() с параметром 17 (суббота), чтобы найти последнюю субботу периода.

4. Пользовательская функция VBA для сложных правил

Если стандартные формулы не покрывают ваши нужды (например, кварталы зависят от дня недели или праздников), напишите собственную функцию на VBA. Откройте редактор (Alt + F11), вставьте новый модуль (Insert → Module) и добавьте код:

Function КВАРТАЛ_ПО_ДАТЕ(d As Date, Optional FinancialYearStart As Integer = 1) As String

Dim MonthNum As Integer

MonthNum = Month(d)

' Корректировка для финансового года, начинающегося с месяца FinancialYearStart

If MonthNum < FinancialYearStart Then MonthNum = MonthNum + 12

КВАРТАЛ_ПО_ДАТЕ = "Q" & WorksheetFunction.RoundUp(MonthNum / 3, 0) - (4 * (FinancialYearStart > 3))

End Function

Теперь в Excel можно использовать формулу:

=КВАРТАЛ_ПО_ДАТЕ(A1; 7)

Где 7 — месяц (июль), с которого начинается финансовый год.

  • 🔧 Настройка: Измените логику в коде, если кварталы определяются по другим правилам (например, по сумме продаж).
  • 📁 Совместимость: Сохраните файл как .xlsm (с поддержкой макросов), иначе функция не будет работать.

Использовать Excel 2010 или новее|Включить макросы в настройках безопасности|Сохранить файл как .xlsm|Проверить код на наличие ошибок перед запуском

-->

5. Power Query для автоматической обработки больших данных

Если вы работаете с большими наборами данных (тысячи строк), Power Query — оптимальное решение. Этот инструмент позволяет добавить столбец с кварталом без формул:

  1. Выделите таблицу с датами → Данные → Из таблицы/диапазона (в Excel 2016+).
  2. В редакторе Power Query выберите столбец с датой → Добавить столбец → Дата → Квартал → Квартал года.
  3. Для финансового года: Добавить столбец → Пользовательский столбец с формулой:
    if Date.Month([Date]) >= 7 then "Q" & Number.RoundUp(Date.Month([Date]) / 3, 0) - 2 else "Q" & Number.RoundUp((Date.Month([Date]) + 12) / 3, 0) - 4
  4. Нажмите Закрыть и загрузить.

Power Query обновляет данные при изменении источника, что избавляет от необходимости копировать формулы. Кроме того, этот метод работает быстрее на больших объёмах (100 000+ строк).

6. Условное форматирование для визуализации кварталов

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

  1. Выделите диапазон с датами.
  2. Перейдите в Главная → Условное форматирование → Создать правило → Использовать формулу....
  3. Для I квартала введите формулу:
    =И(МЕСЯЦ(A1)>=1; МЕСЯЦ(A1)<=3)

    и задайте цвет заливки (например, зелёный).

  4. Повторите для остальных кварталов с другими цветами.

Это поможет сразу увидеть распределение данных по периодам без дополнительных столбцов. Например, в отчёте о продажах вы быстро заметите, в каком квартале был пик.

⚠️ Внимание: Условное форматирование по формулам не обновляется автоматически при изменении данных, если в настройках Excel отключён автоматический пересчёт. Чтобы принудительно обновить цвета, нажмите F9 или перейдите в Формулы → Вычислить лист.

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

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

  • 🗓️ Неверный формат даты: Excel воспринимает 15/08/2026 как 15 августа в российских настройках, но как 8 мая в американских. Всегда проверяйте формат через Формат ячеек → Дата.
  • 🔢 Округление вниз вместо вверх: Формула =ОКРУГЛ(МЕСЯЦ(A1)/3;0) вернёт 2 для июня (месяц 6), хотя правильный квартал — 2. Но для марта (месяц 3) она вернёт 1, что корректно. Однако для апреля (месяц 4) результат будет 1 вместо 2! Всегда используйте ОКРВВЕРХ.
  • 📅 Игнорирование високосных годов: Если кварталы привязаны к дням (например, "первые 90 дней"), учитывайте, что в високосном году февраль длиннее. Используйте ДАТАМЕС() вместо фиксированных дат.

Критическая ошибка: если в формуле для финансового года (начинающегося с июля) не скорректировать номер квартала, то январь (месяц 1) будет отнесён к IV кварталу предыдущего года, а не к III кварталу текущего финансового года.

FAQ: Частые вопросы о кварталах в Excel

Можно ли определить квартал без формул, только через формат ячейки?

Нет, формат ячейки в Excel не поддерживает отображение квартала. Максимум, что можно сделать — это показать месяц прописью (например, "январь") через пользовательский формат ММММ. Для кварталов обязательно нужна формула или VBA.

Как посчитать количество рабочих дней в квартале?

Используйте комбинацию функций ЧИСТРАБДНИ.МЕЖД с границами квартала. Например, для I квартала 2026 года:

=ЧИСТРАБДНИ.МЕЖД(ДАТА(2026;1;1); ДАТА(2026;3;31))

Чтобы автоматизировать, замените 2026 на ГОД(A1), а границы квартала рассчитайте через ДАТАМЕС.

Почему формула =ОКРВВЕРХ(МЕСЯЦ(A1)/3) возвращает #ИМЯ?

Ошибка #ИМЯ? означает, что Excel не распознаёт имя функции. Возможные причины:

  • Опечатка в названии (например, ОКРУГЛВВЕРХ вместо ОКРВВЕРХ).
  • Язык Excel отличается от русского (в английской версии используйте CEILING).
  • Отсутствует надстройка "Пакет анализа" (актуально для Excel 2003 и старше).

Проверьте регистр и языковые настройки в Файл → Параметры → Язык.

Как сделать сводную таблицу по кварталам?

Добавьте в исходные данные столбец с кварталом (любым из описанных выше методов), затем:

  1. Выделите данные → Вставка → Сводная таблица.
  2. Перетащите поле с датой в область Строки.
  3. Нажмите на стрелку рядом с датой → Группировка → Кварталы.

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

Можно ли в Excel задать нестандартные кварталы (например, 5-4-4 недели)?

Да, но потребуется ручная настройка. Создайте таблицу с границами кварталов (например, в отдельном листе), а затем используйте ПРОСМОТР() или ИНДЕКС/ПОИСКПОЗ для сопоставления даты с кварталом. Пример границ для 5-4-4:

Квартал Начало Конец
Q1 01.04.2026 07.06.2026 (5 недель)
Q2 08.06.2026 02.08.2026 (4 недели)