Почему Excel воспринимает даты как числа — и как это использовать
Microsoft Excel хранит даты в виде последовательных чисел, где 1 января 1900 года равно единице, а каждое последующее число соответствует новому дню. Например, 45370 — это 10 марта 2026 года. Такой подход позволяет выполнять вычисления с датами: прибавлять дни, вычитать интервалы или сравнивать периоды. Однако пользователи часто сталкиваются с обратной задачей: преобразовать отображаемую дату в её числовой эквивалент для аналитики, интеграции с другими системами или создания формул.
В этой статье разберём 5 рабочих методов конвертации дат в числа — от базового изменения формата ячейки до написания VBA-макросов. Особое внимание уделим типичным ошибкам (например, почему после преобразования получается ######) и нюансам работы с разными региональными настройками Excel. Материал актуален для всех версий программы, включая Excel 2026 и Office 365.
Если вам нужно не просто получить число, а извлечь из даты год, месяц или день — в конце статьи есть FAQ с готовыми формулами для таких задач.
Метод 1: Изменение формата ячейки (самый быстрый способ)
Это базовый приём, который работает в 90% случаев. Суть в том, что Excel просто меняет способ отображения данных, не изменяя их внутреннее значение. Например, дата 15.05.2026 в формате Общий или Числовой станет числом 45416.
Как это сделать:
- 📌 Выделите ячейку (или диапазон) с датой.
- 🖱️ Нажмите правой кнопкой мыши и выберите
Формат ячеек...(или используйте горячие клавишиCtrl+1). - 📊 В открывшемся окне перейдите на вкладку Число → выберите категорию Общий или Числовой.
- ✅ Нажмите ОК — дата преобразуется в число.
⚠️ Внимание: Если после изменения формата вы видите ########, это означает, что столбец слишком узкий для отображения числа. Растяните его вручную или используйте автоподбор ширины (Двойной клик по правой границе заголовка столбца).
Метод 2: Функция ДАТАЗНАЧ (DATEVALUE) для текстового формата
Если ваша дата хранится как текст (например, после импорта из CSV или базы данных), функция ДАТАЗНАЧ (DATEVALUE в английской версии) преобразует её в серийный номер Excel. Это полезно, когда даты отображаются как строки и не реагируют на изменение формата ячейки.
Синтаксис:
=ДАТАЗНАЧ("дата_как_текст")
Примеры использования:
| Текстовая дата (исходная) | Формула | Результат (число) |
|---|---|---|
"15.05.2026" |
=ДАТАЗНАЧ("15.05.2026") |
45416 |
"May 15, 2026" (английский формат) |
=ДАТАЗНАЧ("15-May-2026") |
45416 |
"2026/05/15" (формат ГГГГ/ММ/ДД) |
=ДАТАЗНАЧ("15/05/2026") |
#ЗНАЧ! (ошибка) |
⚠️ Внимание: Функция ДАТАЗНАЧ зависит от региональных настроек Excel. Если ваша система использует формат даты ММ/ДД/ГГГГ, а в тексте указан ДД.ММ.ГГГГ, возникнет ошибка #ЗНАЧ!. Решение — или изменить настройки Windows, или использовать функцию ПОДСТАВИТЬ для преобразования формата:
=ДАТАЗНАЧ(ПОДСТАВИТЬ("15.05.2026"; "."; "/"))
Метод 3: Формулы для извлечения года, месяца или дня
Иногда требуется не вся дата в виде числа, а только её компоненты — например, год для группировки данных или месяц для построения графиков. Для этого в Excel есть специализированные функции:
- 📅
ГОД(дата)— возвращает год (например,2026). - 📆
МЕСЯЦ(дата)— возвращает номер месяца (от1до12). - 📇
ДЕНЬ(дата)— возвращает день месяца (от1до31). - 🕒
ДАТА(год; месяц; день)— создаёт дату из компонентов (обратная операция).
Примеры:
=ГОД(A1) // Вернёт 2026, если в A1 дата 15.05.2026
=МЕСЯЦ(A1)*30 // Приблизительное количество дней в месяце
=ДЕНЬ(A1)&"-й день" // Вернёт "15-й день"
Для извлечения номера недели используйте функцию НОМНЕДЕЛИ:
=НОМНЕДЕЛИ(A1; 2) // 2 — неделя начинается с понедельника
Используете ли вы абсолютные ссылки ($A$1) для фиксированных ячеек?|Проверяете ли результат на ошибки (#ЗНАЧ!, #ЧИСЛО!)?|Учитываете ли региональные настройки при работе с датами?|Тестируете ли формулы на крайних значениях (например, 31.12.2026)?
-->
Метод 4: Power Query для пакетной обработки
Если у вас большая таблица с тысячами дат, ручное форматирование или написание формул для каждой ячейки займёт слишком много времени. В этом случае поможет инструмент Power Query (доступен в Excel 2016 и новее). Он позволяет:
- 🔄 Преобразовать столбец с датами в числа за несколько кликов.
- 📥 Импортировать данные из внешних источников (CSV, SQL, JSON) с автоматической конвертацией.
- 🔄 Обновлять результаты при изменении исходных данных.
Пошаговая инструкция:
- Выделите таблицу с датами → перейдите на вкладку
Данные→Из таблицы/диапазона. - В открывшемся редакторе Power Query выделите столбец с датами.
- На вкладке
ПреобразованиевыберитеТип данных: Дата(если Excel воспринимает данные как текст). - Затем выберите
Тип данных: Целое число. - Нажмите
Закрыть и загрузить— данные преобразуются в новый лист.
⚠️ Внимание: Power Query создаёт связанную таблицу, которая обновляется при изменении исходных данных. Если вам нужно статичное значение, скопируйте результаты и вставьте как Значения (Ctrl+Shift+V).
Что делать, если Power Query не распознаёт даты?
Если даты импортированы как текст в нестандартном формате (например, "15 мая 2026 г."), используйте Столбец по примеру в Power Query:
1. Выделите столбец → Добавить столбец → Столбец по примеру.
2. В первой ячейке нового столбца введите правильную дату (например, 15.05.2026).
3. Power Query автоматически определит шаблон и преобразует остальные строки.
4. Затем измените тип данных на Целое число.
Метод 5: VBA-макрос для автоматизации
Если вам часто приходится конвертировать даты в числа, имеет смысл написать макрос на VBA. Это ускорит процесс и позволит обрабатывать большие массивы данных без ручного вмешательства.
Пример макроса, который преобразует выделенные ячейки с датами в их числовые эквиваленты:
Sub ConvertDatesToNumbers()
Dim cell As Range
For Each cell In Selection
If IsDate(cell.Value) Then
cell.NumberFormat = "General"
cell.Value = cell.Value
End If
Next cell
End Sub
Как использовать:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Выделите ячейки с датами в Excel и запустите макрос (
F5или черезМакросыв менюВид).
⚠️ Внимание: Макрос заменяет исходные данные. Если нужно сохранить оригинальные даты, сначала скопируйте их в другой столбец. Также убедитесь, что в настройках Excel разрешено выполнение макросов (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Включить все макросы).
Типичные ошибки и как их избежать
При преобразовании дат в числа пользователи часто сталкиваются с следующими проблемами:
| Ошибка | Причина | Решение |
|---|---|---|
###### в ячейке |
Столбец слишком узкий для отображения числа. | Растяните столбец или примените формат Общий. |
#ЗНАЧ! в функции ДАТАЗНАЧ |
Некорректный формат даты (например, ГГГГ-ММ-ДД при настройках ДД.ММ.ГГГГ). | Используйте ПОДСТАВИТЬ или измените региональные настройки. |
| Число не совпадает с ожидаемой датой | Excel считает даты с 1900 года, а не с 1904 (настройка в Файл → Параметры → Дополнительно). |
Проверьте параметр Система дат 1904 и снимите галочку, если она установлена. |
| Дата не преобразуется в число | Ячейка содержит текст, а не дату (например, после импорта). | Используйте ДАТАЗНАЧ или ТЕКСТ.ПОСЛЕ для очистки данных. |
Ещё одна распространённая проблема — разница в 4 года при работе с датами до 1900 года. Дело в том, что Excel не поддерживает даты раньше 1 января 1900 года (в системе 1900) или 1 января 1904 года (в системе 1904). Если вам нужно работать с историческими датами, используйте специализированные надстройки или конвертируйте их в текстовый формат.
FAQ: Частые вопросы по работе с датами в Excel
Как вернуть дату обратно из числа?
Примените к ячейке формат Дата (Ctrl+1 → Категория: Дата). Или используйте формулу =ДАТА(ГОД_ИЗ_ЧИСЛА; МЕСЯЦ_ИЗ_ЧИСЛА; ДЕНЬ_ИЗ_ЧИСЛА), где компоненты извлекаются функциями ГОД, МЕСЯЦ, ДЕНЬ.
Почему после преобразования дата сдвинулась на 4 года?
В настройках Excel включён параметр Система дат 1904 (Файл → Параметры → Дополнительно). Снимите галочку и перезагрузите файл — даты вернутся к правильным значениям.
Как преобразовать дату в формате UNIX timestamp?
Timestamp в Excel преобразуется по формуле:
=ДАТА(1970;1;1) + (A1/86400)
Где A1 — ячейка с timestamp (количество секунд с 1 января 1970 года). Для обратного преобразования:
=(A1 - ДАТАЗНАЧ("1970-01-01")) * 86400
Можно ли конвертировать даты в числа без потери точности?
Да, если исходные данные корректны. Однако учитывайте, что Excel хранит даты с точностью до дня, а время (часы, минуты) — как дробную часть числа. Например, 45416,5 — это полдень 15 мая 2026 года. Чтобы сохранить время, используйте формат Общий или Числовой с достаточным количеством десятичных знаков.
Как автоматически обновлять числа при изменении дат?
Используйте динамические массивы (в Excel 365 и 2021) или таблицы Excel:
- Преобразуйте диапазон в таблицу (
Ctrl+T). - Добавьте столбец с формулой (например,
=ДАТАЗНАЧ([@Дата]), гдеДата— название столбца). - Теперь при изменении исходных дат числа будут обновляться автоматически.