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

Почему стандартный подсчёт не работает с датами

Вы когда-нибудь пытались просто выделить столбец с датами и посмотреть количество значений в строке состояния Excel? Если да, то наверняка заметили странность: программа показывает ноль или неверное число. Всё потому, что Excel хранит даты как числа — количество дней с 1 января 1900 года. Например, 45000 в ячейке с форматом "Дата" отобразится как 12.04.2023, но для функций подсчёта это просто число.

Эта особенность приводит к типичным ошибкам:

  • 🔢 Функция СЧЁТ игнорирует ячейки с датами, если рядом есть текст
  • 📅 Фильтр "равно дд.мм.гггг" не находит все даты из-за внутреннего числового формата
  • 📊 Условное форматирование не срабатывает на "пустые" ячейки, которые на самом деле содержат дату 00.01.1900

В этой статье разберём 5 надёжных способов посчитать ячейки с датами — от простых функций до продвинутых формул с учётом диапазонов, пустых значений и ошибок. Все методы работают в Excel 2010–2026 и Excel Online.

📊 Как часто вы работаете с датами в Excel?
Ежедневно
Несколько раз в неделю
Рядом
Первый раз

Способ 1: Функция СЧЁТ с проверкой формата

Самый быстрый метод — использовать СЧЁТ с критерием, который отсекает не-даты. Формула выглядит так:

=СЧЁТ(диапазон)

Но здесь есть подвох: СЧЁТ учитывает любые числа, включая даты в числовом формате. Чтобы отфильтровать только ячейки с форматированием "Дата", добавьте проверку через ЕЧИСЛО + ДАТАЗНАЧ:

=СУММПРОИЗВ(--(ЕЧИСЛО(диапазон));--(ДАТАЗНАЧ(ТЕКСТ(диапазон;"дд.мм.гггг"))=диапазон))

Разберём на примере. Допустим, у вас данные в столбце A2:A100, где смешаны даты, текст и числа:

ЯчейкаЗначениеТип
A215.05.2023Дата
A3ПриветТекст
A445000Число (дата в числовом виде)
A5#ЗНАЧ!Ошибка
A601.01.1900Дата (ноль в Excel)

Формула =СУММПРОИЗВ(--(ЕЧИСЛО(A2:A6));--(ДАТАЗНАЧ(ТЕКСТ(A2:A6;"дд.мм.гггг"))=A2:A6)) вернёт 2 — только ячейки A2 и A6 (исключит число 45000, так как оно не отформатировано как дата).

Способ 2: Функция СЧЁТЗ для учёта пустых ячеек

Если в вашем диапазоне есть пустые ячейки, которые тоже нужно учитывать (например, для проверки заполненности отчёта), используйте СЧЁТЗ:

=СЧЁТЗ(диапазон)

Но и здесь есть нюанс: СЧЁТЗ посчитает все непустые ячейки, включая текст и ошибки. Чтобы отфильтровать только даты, комбинируйте её с ЕОШИБКА и ДАТАЗНАЧ:

=СУММ(--(ЕЧИСЛО(диапазон));--(НЕ(ЕОШИБКА(ДАТАЗНАЧ(ТЕКСТ(диапазон;"дд.мм.гггг")))))))

Пример: в диапазоне B2:B10 есть даты, текст "Нет данных" и пустые ячейки. Формула выше вернёт количество только ячеек с датами, игнорируя остальное.

⚠️ Внимание: Если в ваших данных есть даты в формате дд-мм-гг или гггг/мм/дд, замените формат в функции ТЕКСТ на соответствующий. Например, для американского формата используйте "mm/dd/yyyy".

Способ 3: Фильтр по датам (без формул)

Не хотите возиться с формулами? Воспользуйтесь встроенным фильтром Excel:

  1. Выделите диапазон с датами (включая заголовок).
  2. Нажмите Данные → Фильтр (или Ctrl+Shift+L).
  3. Раскройте выпадающий список в заголовке столбца.
  4. Выберите Фильтры по дате → Все даты (или укажите диапазон, например "за последний месяц").

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

Как отфильтровать даты в сводной таблице?

В сводной таблице кликните по стрелочке в поле с датами → Фильтры значений → выберите условие (например, "первые 10 элементов" или "больше чем"). Для группировки по месяцам/годам используйте правую кнопку мыши на дате → Группировать.

Минус метода: фильтр не отличает даты от чисел в том же диапазоне (например, 45000 может отобразиться как дата, если применить формат ячейки). Для точности комбинируйте фильтр с ручной проверкой формата.

Способ 4: Условное форматирование для визуального подсчёта

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

  1. Выделите диапазон (например, C2:C100).
  2. Перейдите в Главная → Условное форматирование → Создать правило.
  3. Выберите Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу: =ЕЧИСЛО(C2).
  5. Задайте формат (например, зелёный фон) и нажмите ОК.

Теперь все ячейки с датами (и числами) будут выделены. Чтобы посчитать их количество:

  • 🔍 Включите фильтр по цвету (Данные → Фильтр → Фильтр по цвету ячейки).
  • 📊 Количество отфильтрованных строк покажет Excel в строке состояния.
⚠️ Внимание: Этот метод выделит все числа, а не только даты. Чтобы отсеять числа, используйте формулу с проверкой диапазона значений (например, даты обычно в пределах 1..2958465, что соответствует 31.12.9999).

Способ 5: Power Query для сложных данных

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

  1. Выделите диапазон и нажмите Данные → Из таблицы/диапазона (или Ctrl+T для создания таблицы).
  2. В открывшемся редакторе Power Query выберите столбец с датами.
  3. Кликните по стрелочке в заголовке столбца → Фильтр по датеВсе даты.
  4. Нажмите Закрыть и загрузить — Excel создаст новую таблицу только с датами.
  5. Используйте СЧЁТЗ для подсчёта строк в новой таблице.

Power Query автоматически распознаёт форматы дат, включая нестандартные (например, "5 мая 2023" или "2023/05/15"). Это единственный метод, который корректно обрабатывает даты в текстовом формате без ручного преобразования.

📌 Преобразуйте диапазон в таблицу (Ctrl+T)

📌 Убедитесь, что столбец с датами имеет единый формат

📌 Удалите пустые строки (если они мешают анализу)

📌 Проверьте региональные настройки дат в Windows (влияют на распознавание)-->

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

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

  • 🗓️ Неучтённые "нулевые" даты: Ячейки с 00.01.1900 (ноль в Excel) часто воспринимаются как пустые. Используйте =ЕЧИСЛО(A1) для их обнаружения.
  • 🌍 Региональные форматы: Дата 05/06/2023 в США — это 5 июня, а в Европе — 6 мая. Всегда проверяйте настройки региона в Файл → Параметры → Язык.
  • 🔄 Автоматическое преобразование текста: Excel может конвертировать "1-2" в дату 01.02.текущий_год. Отключите это в Параметры → Формулы → Параметры вычислений.

Чтобы избежать ошибок, следуйте простому правилу: всегда проверяйте формат ячейки перед подсчётом. Кликните правой кнопкой по ячейке → Формат ячеек → вкладка Число. Если там выбрано "Дата", значит значение хранится корректно.

FAQ: Ответы на частые вопросы

Можно ли посчитать даты в определённом диапазоне (например, только за 2023 год)?

Да, используйте функцию СЧЁТЕСЛИМН с условием:

=СЧЁТЕСЛИМН(диапазон; ">="&ДАТА(2023;1;1); диапазон; "<="&ДАТА(2023;12;31))

Эта формула посчитает все даты между 1 января и 31 декабря 2023 года.

Почему функция СЧЁТЕСЛИ не работает с датами?

СЧЁТЕСЛИ некорректно обрабатывает даты в текстовом формате. Например, =СЧЁТЕСЛИ(A1:A10; "15.05.2023") вернёт 0, даже если такая дата есть. Используйте СЧЁТЕСЛИМН или преобразуйте дату в число через ДАТАЗНАЧ:

=СЧЁТЕСЛИ(A1:A10; ДАТАЗНАЧ("15.05.2023"))
Как посчитать уникальные даты в столбце?

Для подсчёта уникальных дат используйте комбинацию ЧАСТОТА + СЧЁТЕСЛИ:

  1. Создайте вспомогательный столбец с формулой =ЕСЛИОШИБКА(ПОИСКПОЗ(A2; $A$2:A2; 0); "").
  2. Отфильтруйте пустые значения во вспомогательном столбце.
  3. Используйте СЧЁТЗ для подсчёта оставшихся строк.

Или воспользуйтесь Power Query: загрузите данные → выберите столбец → Главная → Группировка → по столбцу → операция "Количество значений".

Можно ли посчитать даты в Google Таблицах?

Да, все описанные методы работают и в Google Sheets, за исключением Power Query (там используется Google Apps Script). Для подсчёта дат в диапазоне используйте:

=COUNTIF(A1:A10; ">="&DATE(2023;1;1))

Обратите внимание: в Google Таблицах даты начинаются с 30.12.1899 (а не 1900 года, как в Excel).

Как посчитать ячейки с датами, которые старше/новее текущей даты?

Используйте СЧЁТЕСЛИ с динамической датой:

=СЧЁТЕСЛИ(диапазон; "<"&СЕГОДНЯ())  // Даты старше сегодняшней

=СЧЁТЕСЛИ(диапазон; ">="&СЕГОДНЯ()) // Даты сегодня и новее

Для учёта времени (не только даты) замените СЕГОДНЯ() на ТДАТА().