Почему Excel хранит даты как числа и как это использовать
Вы когда-нибудь замечали, что Excel иногда воспринимает введённую вами дату как обычное число? Это не ошибка программы, а особенность её работы. Дело в том, что все даты в Excel хранятся как числовые значения — количество дней, прошедших с 1 января 1900 года (в Windows) или с 1 января 1904 года (в Mac). Например, дата 01.01.2026 для Excel — это число 45292, потому что с 1900 года прошло именно столько дней.
Эта система позволяет легко выполнять вычисления с датами: прибавлять дни, вычитать интервалы или сравнивать периоды. Но что делать, если вам нужно показать дату именно как число — например, для отчётности, где требуется формат 20260101 вместо 01.01.2026? Или если вы импортировали данные, где даты отображаются как пятизначные числа, и нужно их преобразовать обратно? В этой статье разберём все способы — от элементарных до автоматизированных.
Важно понимать разницу между отображением даты (как она выглядит в ячейке) и её хранением (какое значение на самом деле записано). Иногда достаточно просто изменить формат ячейки, а иногда потребуется применить формулу или даже макрос. Мы рассмотрим оба подхода, а также типичные ошибки, которые допускают пользователи.
Способ 1: Изменение формата ячейки (самый быстрый метод)
Если вам нужно, чтобы дата отображалась как число, но при этом оставалась датой для вычислений — достаточно поменять её формат. Этот метод не изменяет само значение в ячейке, а только его визуальное представление.
Как это сделать:
- 📌 Выделите ячейки или диапазон с датами.
- 🖱️ Нажмите правой кнопкой мыши и выберите
Формат ячеек...(или используйте сочетаниеCtrl+1). - 📊 В открывшемся окне перейдите на вкладку
Число→Числовой. - ⚙️ Укажите количество десятичных знаков (обычно
0для целых чисел).
После этого дата 15.05.2023 превратится в число 45066. Но помните: это всё ещё дата для Excel! Если вы прибавите к такой ячейке 1, она станет 45067, что соответствует 16.05.2023.
⚠️ Внимание: Если вы скопируете эти "числа" в другой файл или программу, они могут снова отобразиться как даты — потому что их внутренний формат не изменился. Для полного преобразования используйте способы ниже.
Способ 2: Формулы для преобразования даты в число
Когда нужно получить числовое представление даты в отдельной ячейке (а не менять формат исходной), используйте формулы. Это полезно, если вам требуется, например, номер недели, день года или дата в формате ГГГГММДД.
Основные формулы:
| Цель | Формула | Пример (для 15.05.2023) |
|---|---|---|
| Дата → число дней с 1900 года | =A1 (с числовым форматом) |
45066 |
Дата в формате ГГГГММДД |
=ТЕКСТ(A1;"yyyymmdd") |
20230515 |
Дата в формате ДДММГГГГ |
=ТЕКСТ(A1;"ddmmyyyy") |
15052023 |
| Номер недели в году | =НОМНЕДЕЛИ(A1) |
20 |
| День года (1–365) | =A1-ДАТА(ГОД(A1);1;0) |
135 |
Если вам нужно сохранить исходные даты и создать отдельный столбец с числовыми значениями, просто введите формулу в соседней ячейке и протяните её вниз. Например, для преобразования даты в формат ГГГГММДД:
=ТЕКСТ(B2;"yyyymmdd")
⚠️ Внимание: Формула=ТЕКСТ()возвращает текстовое значение, а не число! Если вам нужно именно число (например, для дальнейших расчётов), используйте=--ТЕКСТ(A1;"yyyymmdd")— двойной унарный минус преобразует текст в число.
Способ 3: Замена даты на число с помощью "Найти и заменить"
Если у вас в таблице уже есть даты, отображаемые как числа (например, 45066 вместо 15.05.2023), и вам нужно заменить их на нормальные числовые значения, используйте функцию Найти и заменить:
Инструкция:
- Выделите диапазон с "датами-числами".
- Нажмите
Ctrl+H(илиГлавная → Найти и выделить → Заменить). - В поле
Найтивведите формат вашей даты (например,.....дляДД.ММ.ГГГГ). - В поле
Заменить наоставьте пустым. - Нажмите
Заменить всё. - Теперь примените к ячейкам
Числовойформат.
Этот метод сработает, если даты хранятся как текст. Если же они уже являются датами в числовом формате, используйте Специальная вставка (см. следующий способ).
Выделите все ячейки с датами|Проверьте текущий формат ячеек (дата или текст?)|Создайте резервную копию данных|Определитесь с конечным форматом (ГГГГММДД, ДДММГГГГ и т.д.)|Убедитесь, что в данных нет ошибок (например, 31 февраля)
-->
Способ 4: Специальная вставка для преобразования форматов
Когда даты хранятся как числа (например, 45066), но отображаются как даты (15.05.2023), и вам нужно получить именно числовое значение без формул, используйте Специальную вставку:
Пошаговая инструкция:
- 📋 Скопируйте ячейки с датами (
Ctrl+C). - 🖱️ Щёлкните правой кнопкой по пустой ячейке и выберите
Специальная вставка...(илиГлавная → Вставить → Специальная вставка). - 🔢 В окне выберите
Значенияи нажмитеОК. - 📊 Теперь примените к вставленным данным
Числовойформат.
Этот метод полезен, если вам нужно разорвать связь с исходными данными (например, при работе с выгрузками из 1С или других систем). После специальной вставки ячейки будут содержать именно числа, а не даты в числовом формате.
Способ 5: VBA-макрос для пакетной обработки
Если вам нужно регулярно преобразовывать даты в числа (или наоборот) в больших таблицах, имеет смысл автоматизировать процесс с помощью VBA. Ниже приведён макрос, который заменяет все даты в выделенном диапазоне на числа в формате ГГГГММДД:
Sub ConvertDatesToNumbers()
Dim cell As Range
For Each cell In Selection
If IsDate(cell.Value) Then
cell.Value = Format(cell.Value, "yyyymmdd")
cell.NumberFormat = "0" ' Числовой формат
End If
Next cell
End Sub
Как использовать:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Выделите диапазон с датами в Excel.
- Запустите макрос (
F5илиВыполнить → Run Sub/UserForm).
Этот макрос необратимо заменяет даты на числа! Если вам нужно сохранить исходные данные, сначала создайте резервную копию.
⚠️ Внимание: Макросы работают только в файлах с расширением.xlsm(с поддержкой макросов). Если ваш файл имеет формат.xlsx, сохраните его какКнига Excel с поддержкой макросов.
Что делать, если макрос не работает?
Убедитесь, что в настройках Excel включена поддержка макросов (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Настройки макросов → Включить все макросы).
Проверьте, что выделенный диапазон содержит именно даты, а не текст или пустые ячейки.
Если Excel выдаёт ошибку при запуске, возможно, отключены надстройки Visual Basic for Applications (переустановите Office или восстановите компоненты через Панель управления → Программы и компоненты).
Типичные ошибки и как их избежать
При работе с датами и их преобразованием в числа пользователи часто сталкиваются с типичными проблемами. Вот самые распространённые из них и способы их решения:
1. Даты отображаются как ####
Это происходит, когда ширина столбца слишком мала для отображения числа. Решение: расширьте столбец или примените формат с меньшим количеством знаков (например, 0 вместо 0.00).
2. После преобразования числа округляются
Если вы используете формулу =ТЕКСТ(), результат будет текстом, а не числом. Чтобы избежать округления при дальнейших расчётах, используйте двойной унарный минус: =--ТЕКСТ(A1;"yyyymmdd").
3. Даты из внешних источников не распознаются
При импорте из CSV или баз данных даты могут восприниматься как текст. Чтобы исправить это, используйте функцию ДАТАЗНАЧ():
=ДАТАЗНАЧ(A1)
Затем примените нужный числовой формат.
4. Неправильный порядок дня и месяца
Excel может путать ДД.ММ.ГГГГ и ММ.ДД.ГГГГ, особенно при импорте данных. Чтобы избежать ошибок, используйте явное указание форматов:
=ДАТА(ГОД(A1);МЕСЯЦ(A1);ДЕНЬ(A1))
FAQ: Ответы на частые вопросы
Можно ли вернуть дату обратно из числа?
Да, если число представляет количество дней с 1900 года (например, 45066), просто примените к ячейке формат Дата. Если число в формате ГГГГММДД (например, 20230515), используйте формулу:
=ДАТА(ЛЕВСИМВ(A1;4);ПСТР(A1;5;2);ПСТР(A1;7;2))
Почему после преобразования числа получаются неверные даты?
Это происходит из-за различия в системах дат: Excel для Windows считает дни с 1900 года, а для Mac — с 1904. Чтобы исправить, добавьте или вычтите 1462 дня (разница между системами). Также проверьте региональные настройки.
Как преобразовать дату в номер квартала?
Используйте формулу:
=ОКРВВЕРХ(МЕСЯЦ(A1)/3;0)
где A1 — ячейка с датой. Для отображения в формате "2023-Q2" используйте:
=ГОД(A1)&"-Q"&ОКРВВЕРХ(МЕСЯЦ(A1)/3;0)
Можно ли автоматически обновлять числа при изменении дат?
Да, если вы используете формулы (например, =ТЕКСТ(A1;"yyyymmdd")). Числа будут обновляться автоматически при изменении исходной даты. Если вам нужны статичные значения, используйте Специальную вставку (способ 4).
Как преобразовать время в число?
Время в Excel хранится как дробная часть дня (например, 12:00 = 0.5). Чтобы получить количество часов, минут или секунд, используйте:
=A1*24 ' часы
=A1*24*60 ' минуты
=A1*24*60*60 ' секунды