Экспорт данных из 1С:Предприятие в Microsoft Excel — рутинная задача для бухгалтеров, аналитиков и разработчиков. Но с датами здесь часто возникают проблемы: вместо привычных «01.01.2026» в ячейках появляются странные числа вроде 45678 или ошибки формата. Почему так происходит? Дело в том, что 1С и Excel хранят даты по-разному: первая использует внутренний числовой формат (количество дней с 1900 года), а вторая — собственную систему отсчёта от 1 января 1900 (или 1904 в Mac-версиях).
Если вы никогда не сталкивались с этой проблемой, считайте себя везунчиком. Но рано или поздно она возникнет — особенно при работе с большими отчётами, где даты критичны для анализа. В этой статье разберём 5 проверенных способов преобразования дат из 1С в Excel, от простых формул до автоматизации через Power Query и VBA. Вы узнаете, как избежать типичных ошибок, почему «2 января 1900» в Excel не существует, и что делать, если даты сбиваются на 4 года.
Спойлер: самый надёжный метод — это не ручная правка, а настройка экспорта ещё на этапе выгрузки из 1С. Но об этом позже.
Почему даты из 1С отображаются как числа в Excel
Корень проблемы кроется в внутреннем представлении дат в обеих системах. В 1С:Предприятие дата хранится как количество дней, прошедших с 1 января 0001 года (да, именно с первого года нашей эры!). Например, дата «10.05.2026» в 1С — это число 738804. Excel же использует другую точку отсчёта: 1 января 1900 года (или 1904 года в старых Mac-версиях). Поэтому при прямом экспорте 1С передаёт в Excel «сырое» число, а программа интерпретирует его по своим правилам.
Ещё одна ловушка — ошибка 1900 года. В Excel отсутствует дата «29 февраля 1900», хотя математически она должна существовать (1900 год не был високосным, но Excel ошибочно считает его таковым). Из-за этого все даты до 1 марта 1900 в Excel сдвигаются на 1 день. 1С этой ошибки не содержит, что и приводит к расхождениям.
Кроме того, при экспорте через .xls (старый формат) или .csv данные теряют информацию о формате ячеек. Excel по умолчанию воспринимает их как общий формат, а не как даты. Поэтому вместо «15.06.2026» вы видите «45467».
⚠️ Внимание: Если в выгруженном файле даты отображаются как ######, это значит, что ширина столбца недостаточна для корректного отображения числового значения. Растяните столбец или примените формат Дата.
Чтобы избежать проблем, важно понимать, какой именно формат использует ваша версия 1С и Excel. Например, в 1С:Управление торговлей 11 и 1С:Бухгалтерия 3.0 даты экспортируются одинаково, но в Excel 2016 и Excel 365 могут быть нюансы с обработкой.
Способ 1: Ручная правка через формат ячеек
Самый простой, но не всегда надёжный метод — принудительное изменение формата ячеек в Excel. Он подходит, если даты экспортировались как числа (например, «45678») и не требуют сложных преобразований.
Алгоритм действий:
- Выделите столбец с датами в Excel.
- Нажмите правой кнопкой мыши и выберите
Формат ячеек(или используйте сочетаниеCtrl+1). - В открывшемся окне перейдите на вкладку
Число→Дата. - Выберите нужный формат (например, «14.03.2001» или «14 марта 2001 г.»).
- Нажмите
ОК.
Если после этого даты отображаются некорректно (например, «01.01.1905» вместо «01.01.2026»), значит, число дней в 1С считалось от другой точки отсчёта. В этом случае поможет формула корректировки (см. следующий раздел).
⚠️ Внимание: Этот метод не работает, если даты экспортировались как текст (например, «15/06/2026»). В таком случае сначала преобразуйте текст в дату с помощью функции =ДАТАЗНАЧ().
Преимущество способа — скорость. Недостаток — он не решает проблему с сдвигом на 4 года, который возникает из-за разницы в системах отсчёта 1С и Excel.
☑️ Проверка перед ручной правкой
Способ 2: Формулы для корректного преобразования
Если ручная правка не помогла, используйте формулы Excel для точного преобразования. Они учитывают разницу в системах отсчёта и позволяют избежать сдвига дат.
Основные формулы:
Здесь
=ДАТА(1900;1;1)+A1-2
A1 — ячейка с числом из 1С, а -2 компенсирует ошибку Excel
=ДАТА(1899;12;31)+A1Используется, если 1С передаёт отрицательные числа (даты до 1900 года).
=ДАТА(1900;1;1)+A1-2-ЕСЛИ(A1>60;0;1)Автоматически корректирует сдвиг для дат до/после 1 марта 1900.
Пример: если в ячейке A1 находится число 45678, формула =ДАТА(1900;1;1)+A1-2 вернёт 01.01.2026.
Для массового преобразования:
- Введите формулу в первую ячейку нового столбца (например,
B1). - Растяните её на весь диапазон (двойной клик по маркеру автозаполнения).
- Скопируйте результаты (
Ctrl+C) и вставьте какЗначения(Правая кнопка → Специальная вставка → Значения) поверх исходных данных.
⚠️ Внимание: Если после применения формулы даты сдвинуты на 4 года назад (например, «2020» вместо «2026»), значит, 1С использовала точку отсчёта 1904 год. Замените в формуле1900на1904.
Критическая особенность: формулы не работают, если даты в 1С хранятся в текстовом формате (например, «DD.MM.YYYY»). В этом случае сначала преобразуйте текст в число с помощью Функция =ЗНАЧЕН().
Почему формула =ДАТАЗНАЧ() не всегда работает?
=ДАТАЗНАЧ() распознаёт даты только в формате, соответствующем региональным настройкам Windows. Если в 1С дата экспортирована как «2026-05-10» (ISO), а в Windows установлен формат «ДД.ММ.ГГГГ», функция вернёт ошибку. Решение: замените разделители на точку вручную или используйте =ПОДСТАВИТЬ().
Способ 3: Power Query — автоматическое преобразование
Power Query (в Excel 2016+ и Excel 365) — самый мощный инструмент для работы с датами из 1С. Он позволяет автоматизировать преобразование и избежать ручной правки при повторных экспортах.
Пошаговая инструкция:
- Импортируйте файл в Excel через
Данные → Получить данные → Из файла → (выберите формат). - В открывшемся окне Power Query выделите столбец с датами.
- Перейдите на вкладку
Преобразованиеи выберитеТип данных → Дата. - Если даты отображаются некорректно, добавьте пользовательский столбец с формулой:
= Date.From(DateTime.FromOADate([Column1] - 2))Здесь
[Column1]— название вашего столбца, а-2компенсирует ошибку Excel. - Удалите исходный столбец и переименуйте новый.
- Нажмите
Закрыть и загрузить.
Преимущества Power Query:
- 🔄 Автоматизация: один раз настроили — больше не нужно правки.
- 📊 Работа с большими данными: обрабатывает миллионы строк без тормозов.
- 🛠️ Гибкость: можно добавлять дополнительные преобразования (например, разбивать дату на день/месяц/год).
Если даты по-прежнему сбиваются, проверьте настройки региональных параметров в Power Query (вкладка Файл → Параметры → Региональные параметры). Для России должен быть выбран формат «русский (Россия)».
Способ 4: Макросы VBA для массовой обработки
Если вы регулярно работаете с датами из 1С, имеет смысл написать макрос на VBA, который будет преобразовывать их в один клик. Это особенно полезно для бухгалтеров, которые ежемесячно выгружают отчёты.
Пример макроса для корректировки дат:
Sub Convert1CDates()
Dim rng As Range
Dim cell As Range
' Выбираем диапазон с датами (например, столбец A)
Set rng = Selection
For Each cell In rng
If IsNumeric(cell.Value) Then
' Преобразуем число из 1С в дату Excel с учётом сдвига
cell.Value = DateSerial(1900, 1, 1) + cell.Value - 2
cell.NumberFormat = "dd.mm.yyyy"
End If
Next cell
End Sub
Как использовать:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Вернитесь в Excel, выделите столбец с датами и запустите макрос (
Alt+F8 → Выбрать Convert1CDates → Выполнить).
Для дат до 1900 года замените в коде DateSerial(1900, 1, 1) на DateSerial(1899, 12, 31).
⚠️ Внимание: Макросы работают только в файлах с расширением.xlsm(с поддержкой макросов). Если вы сохраняете файл как.xlsx, код будет утерян.
Расширенная версия макроса может включать проверку на текстовые даты (например, «10.05.2026») и их автоматическое преобразование в числовой формат.
Способ 5: Настройка экспорта в 1С (оптимальное решение)
Лучший способ избежать проблем с датами — правильно настроить экспорт прямо в 1С. Это избавит от необходимости правки в Excel и гарантирует корректное отображение.
Как настроить экспорт в 1С:
Пример настройки для 1С:Бухгалтерия 3.0:
Если в вашей конфигурации 1С нет таких настроек, обратитесь к программисту — он может доработать обработку экспорта, чтобы даты передавались в Excel уже в корректном формате.
Даже опытные пользователи допускают ошибки при работе с датами из 1С. Вот самые распространённые и способы их решения:
Причина: 1С использовала точку отсчёта 1904 год, а вы применили формулу для 1900 года. Решение: замените в формуле
Файл → Сохранить как... или Ещё → Выгрузить).Excel (.xlsx) вместо CSV или TXT.
Date.
Ещё → Выгрузить.Excel и отметьте галочку Сохранять форматы.
Формат экспорта из 1С
Результат в Excel
Нужна ли правка?
Excel (.xlsx) с сохранением форматовДата отображается корректно
❌ Нет
CSV или TXTЧисло (например, 45678) или текст
✅ Да
Excel (.xls) (старый формат)Возможны ошибки с датами до 1900 года
⚠️ Иногда
XML или JSONЗависит от схемы данных
✅ Обычно да
Типичные ошибки и как их избежать
1900 на 1904 или добавьте +1462 (разница в днях между 1900 и 1904 годами).
######:Причина: столбец слишком узкий для отображения даты в числовом формате. Решение: растяните столбец или примените формат Дата.
Причина: Excel воспринял число как текст. Решение: используйте функцию =ЗНАЧЕН(), чтобы преобразовать текст в число, а затем примените формулу даты.
Причина: в ячейке было пустое значение или ноль. Решение: добавьте проверку на пустые ячейки в формулу: =ЕСЛИ(A1=0;"";ДАТА(1900;1;1)+A1-2).
Ещё одна частая проблема — разные региональные настройки в 1С и Excel. Например, если в 1С дата записана как «DD.MM.YYYY», а в Windows установлен американский формат «MM/DD/YYYY», Excel может неправильно интерпретировать день и месяц. Чтобы избежать этого, перед экспортом проверьте:
- Формат даты в настройках 1С (
Сервис → Параметры → Форматы). - Региональные настройки Windows (
Панель управления → Часы и регион → Изменение форматов даты и времени).
Критично: если вы работаете с датами до 1900 года (например, в исторических отчётах), Excel их не поддерживает. В этом случае экспортируйте данные в CSV и обрабатывайте в специализированных программах (например, Python с библиотекой pandas).
FAQ: Частые вопросы по преобразованию дат
Почему после экспорта из 1С в Excel даты становятся числами?
Excel по умолчанию не распознаёт формат дат из 1С и воспринимает их как числа (количество дней с 1900 года). Чтобы исправить это, примените к столбцу формат Дата или используйте формулы преобразования.
Как преобразовать дату из 1С, если она экспортирована как текст (например, «10.05.2026»)?
Используйте функцию =ДАТАЗНАЧ() (для форматов «ДД.ММ.ГГГГ») или комбинацию =ДАТА(ПРАВСИМВ(A1;4); ПСТР(A1;4;2); ЛЕВСИМВ(A1;2)). Если разделитель не точка, замените её с помощью =ПОДСТАВИТЬ().
Можно ли автоматизировать преобразование дат для ежемесячных отчётов?
Да. Лучшие способы:
- Настройте шаблон в Power Query (обновляется одним кликом).
- Создайте макрос VBA и назначьте его на кнопку.
- Доработайте обработку экспорта в 1С, чтобы даты передавались в корректном формате.
Почему после применения формулы даты сдвигаются на 1 день?
Это известная ошибка Excel с 29 февраля 1900 года. Чтобы исправить, вычтите 1 из результата формулы: =ДАТА(1900;1;1)+A1-2-1 или используйте =ДАТА(1900;1;2)+A1-2.
Как экспортировать даты из 1С в Google Sheets?
В Google Sheets используйте ту же логику, что и в Excel, но с учётом того, что Google Таблицы корректно обрабатывают даты до 1900 года. Формула: =DATE(1900;1;1)+A1-2. Для автоматического обновления используйте Apps Script.