В Microsoft Excel даты часто отображаются в формате ДД.ММ.ГГГГ, но для анализа данных или математических операций требуется преобразовать их в числовой формат. Проблема в том, что Excel хранит даты как последовательные числа (начиная с 1 января 1900 года = 1), но отображает их как даты по умолчанию. Если просто изменить формат ячейки, внешний вид поменяется, но внутреннее значение останется датой — это может привести к ошибкам в формулах.
Многие пользователи сталкиваются с ситуацией, когда после копирования данных из других источников (например, 1С или веб-сайтов) даты автоматически конвертируются в неудобный формат. В этой статье разберём 5 рабочих методов преобразования дат в числа — от простых до продвинутых, с учётом нюансов разных версий Excel (2010, 2016, 2019, Microsoft 365).
Особое внимание уделим случаям, когда стандартные методы не работают: например, если даты хранятся как текст ('15.05.2023) или в нестандартном формате (Май-2023). Также рассмотрим, как избежать типичных ошибок при конвертации, таких как сдвиг на 4 года из-за различия систем дат в Excel и Google Sheets.
Почему Excel хранит даты как числа и как это использовать
В основе хранения дат в Excel лежит система серийных номеров: 1 января 1900 года соответствует числу 1, а каждая последующая дата увеличивает это значение на единицу. Например, 02.01.1900 = 2, 31.12.2023 = 45266. Время хранится как дробная часть: 12:00 = 0.5.
Эта система позволяет выполнять арифметические операции с датами: вычитать одну дату из другой (получая количество дней), прибавлять дни к дате или использовать даты в формулах. Однако для пользователя это создаёт путаницу: при изменении формата ячейки с Дата на Общий отображается серийный номер, но внутренний тип данных остаётся датой, а не числом.
Чтобы проверить текущий формат, выделите ячейку и посмотрите на строку формул:
- 📅 Дата в формате текста: отображается как
'15.05.2023(с апострофом слева в строке формул). - 🔢 Дата как серийный номер: в строке формул видно число (например,
45045), но в ячейке отображается дата. - 📊 Настоящее число: в строке формул и ячейке одинаковое значение (например,
15052023).
Если ваша цель — получить именно число (например, 15052023 для 15.05.2023), стандартное изменение формата не поможет. Нужны специальные функции или комбинации формул.
Способ 1: Изменение формата ячейки (если дата хранится как дата)
Это самый простой метод, но он работает только если данные уже распознаны Excel как даты. Если в ячейке текст (например, '15.05.2023), этот способ не сработает.
Инструкция:
- Выделите ячейки с датами.
- Нажмите
Ctrl+1(или правая кнопка мыши →Формат ячеек). - В окне форматирования выберите категорию
ЧисловойилиОбщий. - Укажите количество десятичных знаков (обычно
0). - Нажмите
ОК.
Результат: даты превратятся в серийные номера (например,
Это означает, что ширина столбца недостаточна для отображения числа. Растяните столбец или измените формат на 45045 для 15.05.2023). Если нужно получить число в формате ДДММГГГГ, используйте Способ 3 или Способ 4.
Что делать если после изменения формата отображается ######?
Общий, чтобы увидеть полное значение.
⚠️ Внимание: Если после изменения формата числа отображаются некорректно (например, 44197 вместо ожидаемого 45045), проверьте настройки книги:
В Excel для Windows и Mac по умолчанию используется система дат
1900, но в некоторых версиях (особенно при импорте из Google Sheets) может быть активирована система1904. Чтобы исправить это, перейдите вФайл → Параметры → Дополнительнои снимите галочку сИспользовать систему дат 1904.
Способ 2: Функция ДАТАЗНАЧ для текстового формата дат
Если даты хранятся как текст (например, после импорта из CSV или копирования с сайта), функция ДАТАЗНАЧ преобразует их в серийные номера, которые затем можно отформатировать как числа.
Синтаксис:
=ДАТАЗНАЧ(текст_даты)
Примеры использования:
| Исходный текст в ячейке A1 | Формула | Результат (серийный номер) | Результат после форматирования как дата |
|---|---|---|---|
'15.05.2023 | =ДАТАЗНАЧ(A1) | 45045 | 15.05.2023 |
15-Май-2023 | =ДАТАЗНАЧ(A1) | 45045 | 15.05.2023 |
2023/05/15 | =ДАТАЗНАЧ(A1) | 45045 | 15.05.2023 |
Май 15, 2023 | =ДАТАЗНАЧ(A1) | 45045 | 15.05.2023 |
После применения функции измените формат ячейки с формулой на Числовой, чтобы увидеть серийный номер. Если нужно получить число в формате ДДММГГГГ, комбинируйте ДАТАЗНАЧ с другими функциями (см. Способ 4).
Ячейка содержит текст, а не дату (проверьте апостроф в строке формул)
Формат текста соответствует региональным настройкам Excel (например, ДД.ММ.ГГГГ для России)
Нет опечаток в дате (например, 32.01.2023 вызовет ошибку)-->
Способ 3: Преобразование даты в число формате ДДММГГГГ (без разделителей)
Если цель — получить число вида 15052023 (для 15.05.2023), используйте комбинацию функций ДЕНЬ, МЕСЯЦ, ГОД и ТЕКСТ:
=ТЕКСТ(ДЕНЬ(A1);"00")&ТЕКСТ(МЕСЯЦ(A1);"00")&ГОД(A1)
Разберём формулу по шагам:
- 📅
ДЕНЬ(A1)— извлекает день из даты в ячейкеA1. - 📆
МЕСЯЦ(A1)— извлекает месяц. - 🗓️
ГОД(A1)— извлекает год. - 🔢
ТЕКСТ(...;"00")— добавляет ведущий ноль к дням и месяцам (например,5становится05). - 🔗
&— оператор конкатенации (склеивает части в одно число).
Пример: если в A1 дата 15.05.2023, формула вернёт 15052023. Чтобы результат отображался как число (а не текст), умножьте его на 1:
=--(ТЕКСТ(ДЕНЬ(A1);"00")&ТЕКСТ(МЕСЯЦ(A1);"00")&ГОД(A1))
⚠️ Внимание: Если исходная дата хранится как текст (например, '15.05.2023), сначала преобразуйте её в дату с помощью ДАТАЗНАЧ:
=--(ТЕКСТ(ДЕНЬ(ДАТАЗНАЧ(A1));"00")&ТЕКСТ(МЕСЯЦ(ДАТАЗНАЧ(A1));"00")&ГОД(ДАТАЗНАЧ(A1)))
Способ 4: Функция ЗНАЧЕН для нестандартных форматов дат
Функция ЗНАЧЕН преобразует текстовый формат даты в серийный номер, даже если разделители нестандартные (например, 15-05-2023 или 15/05/2023). Синтаксис:
=ЗНАЧЕН(A1)
Особенности:
- ✅ Работает с большинством текстовых форматов дат (кроме полностью нестандартных, например,
15 мая 2023 г.). - ❌ Не работает, если текст содержит буквы (например,
15-May-2023— для этого используйтеДАТАЗНАЧ). - 🔄 После применения измените формат ячейки на
Числовой, чтобы увидеть серийный номер.
Пример для даты 15/05/2023 в ячейке A1:
=ЗНАЧЕН(ПОДСТАВИТЬ(A1;"/";"."))
Эта формула сначала заменяет разделитель / на ., а затем преобразует текст в дату.
Способ 5: Power Query для массового преобразования
Если нужно преобразовать тысячи строк с датами, ручные методы неэффективны. В этом случае используйте Power Query (доступен в Excel 2016 и новее):
Пошаговая инструкция:
- Выделите диапазон с датами и нажмите
Данные → Из таблицы/диапазона(илиДанные → Получить данные → Из таблицы/диапазонав Excel 2016). - В открывшемся редакторе Power Query выберите столбец с датами.
- На вкладке
ПреобразоватьнажмитеФормат → Дата(если данные распознаны как текст). - Затем выберите
Преобразовать → В число. - Нажмите
Закрыть и загрузить, чтобы вернуть данные в Excel.
Преимущества метода:
- 🔄 Обрабатывает миллионы строк без зависаний.
- 🔧 Автоматически исправляет нестандартные форматы (например,
Май-15-2023). - 📊 Сохраняет связь с исходными данными (обновляется при изменении источника).
⚠️ Внимание: Если после загрузки числа отображаются с плавающей запятой (например, 4.5045E+04), измените формат столбца на Числовой с 0 десятичными знаками.
Типичные ошибки и как их избежать
При преобразовании дат в числа пользователи часто сталкиваются с следующими проблемами:
| Ошибка | Причина | Решение |
|---|---|---|
Формула возвращает #ЗНАЧ! | Ячейка содержит текст, не распознаваемый как дата (например, 15 мая без года). | Добавьте год вручную или используйте ДАТА для создания даты: =ДАТА(2023;5;15). |
Числа сдвинуты на 4 года (например, 2019 вместо 2023) | Активирована система дат 1904. | Перейдите в Файл → Параметры → Дополнительно и снимите галочку с Использовать систему дат 1904. |
После преобразования числа отображаются как ###### | Ширина столбца недостаточна. | Увеличьте ширину столбца или измените формат на Общий. |
Функция ДАТАЗНАЧ не работает с форматом ГГГГ-ММ-ДД | Excel ожидает формат по региональным настройкам (например, ДД.ММ.ГГГГ для России). | Используйте ЗНАЧЕН с заменой разделителей: =ЗНАЧЕН(ПОДСТАВИТЬ(A1;"-";".")). |
Если ни один из методов не сработал, проверьте:
- 🔍 Тип данных: выделите ячейку и посмотрите в строку формул — есть ли апостроф перед значением (признак текста).
- 🌍 Региональные настройки: в Windows перейдите в
Параметры → Время и язык → Региони проверьте формат даты. - 📋 Скрытые символы: иногда в тексте есть невидимые пробелы или символы переноса. Используйте
=ПЕЧСИМВ(A1), чтобы их обнаружить.
FAQ: Частые вопросы по преобразованию дат в числа
Можно ли преобразовать дату в число без формул?
Да, если дата уже распознана Excel как дата (а не текст), достаточно изменить формат ячейки на Числовой (см. Способ 1). Если дата хранится как текст, без формул не обойтись.
Почему после преобразования числа не совпадают с ожидаемыми?
Наиболее вероятная причина — разница в системах дат. Excel для Windows по умолчанию использует систему 1900 (1 января 1900 = 1), а Excel для Mac до 2011 года использовал систему 1904 (1 января 1904 = 0). Проверьте настройки в Файл → Параметры → Дополнительно.
Как преобразовать дату в формат ДДММГГ (без века)?
Используйте формулу:
=--(ТЕКСТ(ДЕНЬ(A1);"00")&ТЕКСТ(МЕСЯЦ(A1);"00")&ПРАВСИМВ(ГОД(A1);2))
Функция ПРАВСИМВ(ГОД(A1);2) извлекает последние 2 цифры года (например, 23 для 2023).
Можно ли автоматизировать преобразование для новых данных?
Да, с помощью Power Query или макросов VBA. Например, этот код автоматически преобразует даты в столбце A в числа при изменении данных:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Intersect(Target, Me.Range("A:A"))
If Not rng Is Nothing Then
Application.EnableEvents = False
On Error Resume Next
rng.NumberFormat = "0"
rng.Value = rng.Value
On Error GoTo 0
Application.EnableEvents = True
End If
End Sub
Чтобы активировать макрос, нажмите Alt+F11, вставьте код в модуль листа и сохраните файл как .xlsm.
Как вернуть дату обратно из числа?
Если у вас есть серийный номер (например, 45045), измените формат ячейки на Дата. Если число в формате ДДММГГГГ (например, 15052023), используйте формулу:
=ДАТА(ПРАВСИМВ(A1;4);ПСТР(A1;3;2);ЛЕВСИМВ(A1;2))
Здесь ПРАВСИМВ(A1;4) извлекает год (2023), ПСТР(A1;3;2) — месяц (05), ЛЕВСИМВ(A1;2) — день (15).