Почему стандартный подсчёт не работает с датами
Вы когда-нибудь пытались просто выделить столбец с датами и посмотреть количество значений в строке состояния Excel? Если да, то наверняка заметили странность: программа показывает ноль или неверное число. Всё потому, что Excel хранит даты как числа — количество дней с 1 января 1900 года. Например, 45000 в ячейке с форматом "Дата" отобразится как 12.04.2023, но для функций подсчёта это просто число.
Эта особенность приводит к типичным ошибкам:
- 🔢 Функция
СЧЁТигнорирует ячейки с датами, если рядом есть текст - 📅 Фильтр "равно дд.мм.гггг" не находит все даты из-за внутреннего числового формата
- 📊 Условное форматирование не срабатывает на "пустые" ячейки, которые на самом деле содержат дату
00.01.1900
В этой статье разберём 5 надёжных способов посчитать ячейки с датами — от простых функций до продвинутых формул с учётом диапазонов, пустых значений и ошибок. Все методы работают в Excel 2010–2026 и Excel Online.
Способ 1: Функция СЧЁТ с проверкой формата
Самый быстрый метод — использовать СЧЁТ с критерием, который отсекает не-даты. Формула выглядит так:
=СЧЁТ(диапазон)
Но здесь есть подвох: СЧЁТ учитывает любые числа, включая даты в числовом формате. Чтобы отфильтровать только ячейки с форматированием "Дата", добавьте проверку через ЕЧИСЛО + ДАТАЗНАЧ:
=СУММПРОИЗВ(--(ЕЧИСЛО(диапазон));--(ДАТАЗНАЧ(ТЕКСТ(диапазон;"дд.мм.гггг"))=диапазон))
Разберём на примере. Допустим, у вас данные в столбце A2:A100, где смешаны даты, текст и числа:
| Ячейка | Значение | Тип |
|---|---|---|
| A2 | 15.05.2023 | Дата |
| A3 | Привет | Текст |
| A4 | 45000 | Число (дата в числовом виде) |
| A5 | #ЗНАЧ! | Ошибка |
| A6 | 01.01.1900 | Дата (ноль в Excel) |
Формула =СУММПРОИЗВ(--(ЕЧИСЛО(A2:A6));--(ДАТАЗНАЧ(ТЕКСТ(A2:A6;"дд.мм.гггг"))=A2:A6)) вернёт 2 — только ячейки A2 и A6 (исключит число 45000, так как оно не отформатировано как дата).
Способ 2: Функция СЧЁТЗ для учёта пустых ячеек
Если в вашем диапазоне есть пустые ячейки, которые тоже нужно учитывать (например, для проверки заполненности отчёта), используйте СЧЁТЗ:
=СЧЁТЗ(диапазон)
Но и здесь есть нюанс: СЧЁТЗ посчитает все непустые ячейки, включая текст и ошибки. Чтобы отфильтровать только даты, комбинируйте её с ЕОШИБКА и ДАТАЗНАЧ:
=СУММ(--(ЕЧИСЛО(диапазон));--(НЕ(ЕОШИБКА(ДАТАЗНАЧ(ТЕКСТ(диапазон;"дд.мм.гггг")))))))
Пример: в диапазоне B2:B10 есть даты, текст "Нет данных" и пустые ячейки. Формула выше вернёт количество только ячеек с датами, игнорируя остальное.
⚠️ Внимание: Если в ваших данных есть даты в форматедд-мм-ггилигггг/мм/дд, замените формат в функцииТЕКСТна соответствующий. Например, для американского формата используйте"mm/dd/yyyy".
Способ 3: Фильтр по датам (без формул)
Не хотите возиться с формулами? Воспользуйтесь встроенным фильтром Excel:
- Выделите диапазон с датами (включая заголовок).
- Нажмите
Данные → Фильтр(илиCtrl+Shift+L). - Раскройте выпадающий список в заголовке столбца.
- Выберите
Фильтры по дате → Все даты(или укажите диапазон, например "за последний месяц").
Excel автоматически отфильтрует только ячейки с датами. Количество отобранных строк отобразится в строке состояния (внизу окна). Этот метод не требует знания формул и подходит для визуального анализа.
Как отфильтровать даты в сводной таблице?
В сводной таблице кликните по стрелочке в поле с датами → Фильтры значений → выберите условие (например, "первые 10 элементов" или "больше чем"). Для группировки по месяцам/годам используйте правую кнопку мыши на дате → Группировать.
Минус метода: фильтр не отличает даты от чисел в том же диапазоне (например, 45000 может отобразиться как дата, если применить формат ячейки). Для точности комбинируйте фильтр с ручной проверкой формата.
Способ 4: Условное форматирование для визуального подсчёта
Если вам нужно не только посчитать, но и выделить ячейки с датами, используйте условное форматирование:
- Выделите диапазон (например,
C2:C100). - Перейдите в
Главная → Условное форматирование → Создать правило. - Выберите
Использовать формулу для определения форматируемых ячеек. - Введите формулу:
=ЕЧИСЛО(C2). - Задайте формат (например, зелёный фон) и нажмите
ОК.
Теперь все ячейки с датами (и числами) будут выделены. Чтобы посчитать их количество:
- 🔍 Включите фильтр по цвету (
Данные → Фильтр → Фильтр по цвету ячейки). - 📊 Количество отфильтрованных строк покажет Excel в строке состояния.
⚠️ Внимание: Этот метод выделит все числа, а не только даты. Чтобы отсеять числа, используйте формулу с проверкой диапазона значений (например, даты обычно в пределах 1..2958465, что соответствует 31.12.9999).
Способ 5: Power Query для сложных данных
Если у вас большая таблица с смешанными данными (даты, текст, ошибки), Power Query справится лучше формул. Алгоритм:
- Выделите диапазон и нажмите
Данные → Из таблицы/диапазона(илиCtrl+Tдля создания таблицы). - В открывшемся редакторе Power Query выберите столбец с датами.
- Кликните по стрелочке в заголовке столбца →
Фильтр по дате→Все даты. - Нажмите
Закрыть и загрузить— Excel создаст новую таблицу только с датами. - Используйте
СЧЁТЗдля подсчёта строк в новой таблице.
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"))
Как посчитать уникальные даты в столбце?
Для подсчёта уникальных дат используйте комбинацию ЧАСТОТА + СЧЁТЕСЛИ:
- Создайте вспомогательный столбец с формулой
=ЕСЛИОШИБКА(ПОИСКПОЗ(A2; $A$2:A2; 0); ""). - Отфильтруйте пустые значения во вспомогательном столбце.
- Используйте
СЧЁТЗдля подсчёта оставшихся строк.
Или воспользуйтесь Power Query: загрузите данные → выберите столбец → Главная → Группировка → по столбцу → операция "Количество значений".
Можно ли посчитать даты в Google Таблицах?
Да, все описанные методы работают и в Google Sheets, за исключением Power Query (там используется Google Apps Script). Для подсчёта дат в диапазоне используйте:
=COUNTIF(A1:A10; ">="&DATE(2023;1;1))
Обратите внимание: в Google Таблицах даты начинаются с 30.12.1899 (а не 1900 года, как в Excel).
Как посчитать ячейки с датами, которые старше/новее текущей даты?
Используйте СЧЁТЕСЛИ с динамической датой:
=СЧЁТЕСЛИ(диапазон; "<"&СЕГОДНЯ()) // Даты старше сегодняшней
=СЧЁТЕСЛИ(диапазон; ">="&СЕГОДНЯ()) // Даты сегодня и новее
Для учёта времени (не только даты) замените СЕГОДНЯ() на ТДАТА().