Как преобразовать дату из 1С в Excel: 5 работающих способов с примерами

Экспорт данных из 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С?
XLSX (Excel)
CSV (разделитель — запятая)
TXT (разделитель — табуляция)
XML
Другой

Способ 1: Ручная правка через формат ячеек

Самый простой, но не всегда надёжный метод — принудительное изменение формата ячеек в Excel. Он подходит, если даты экспортировались как числа (например, «45678») и не требуют сложных преобразований.

Алгоритм действий:

  1. Выделите столбец с датами в Excel.
  2. Нажмите правой кнопкой мыши и выберите Формат ячеек (или используйте сочетание Ctrl+1).
  3. В открывшемся окне перейдите на вкладку Число → Дата.
  4. Выберите нужный формат (например, «14.03.2001» или «14 марта 2001 г.»).
  5. Нажмите ОК.

Если после этого даты отображаются некорректно (например, «01.01.1905» вместо «01.01.2026»), значит, число дней в 1С считалось от другой точки отсчёта. В этом случае поможет формула корректировки (см. следующий раздел).

⚠️ Внимание: Этот метод не работает, если даты экспортировались как текст (например, «15/06/2026»). В таком случае сначала преобразуйте текст в дату с помощью функции =ДАТАЗНАЧ().

Преимущество способа — скорость. Недостаток — он не решает проблему с сдвигом на 4 года, который возникает из-за разницы в системах отсчёта 1С и Excel.

☑️ Проверка перед ручной правкой

Выполнено: 0 / 4

Способ 2: Формулы для корректного преобразования

Если ручная правка не помогла, используйте формулы Excel для точного преобразования. Они учитывают разницу в системах отсчёта и позволяют избежать сдвига дат.

Основные формулы:

  • 📅 Для дат после 1900 года: =ДАТА(1900;1;1)+A1-2

    Здесь A1 — ячейка с числом из 1С, а -2 компенсирует ошибку Excel с 1900 годом.

  • 🔄 Для дат до 1900 года (редко, но бывает): =ДАТА(1899;12;31)+A1

    Используется, если 1С передаёт отрицательные числа (даты до 1900 года).

  • ⚡ Универсальная формула (работает в 90% случаев): =ДАТА(1900;1;1)+A1-2-ЕСЛИ(A1>60;0;1)

    Автоматически корректирует сдвиг для дат до/после 1 марта 1900.

Пример: если в ячейке A1 находится число 45678, формула =ДАТА(1900;1;1)+A1-2 вернёт 01.01.2026.

Для массового преобразования:

  1. Введите формулу в первую ячейку нового столбца (например, B1).
  2. Растяните её на весь диапазон (двойной клик по маркеру автозаполнения).
  3. Скопируйте результаты (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С. Он позволяет автоматизировать преобразование и избежать ручной правки при повторных экспортах.

Пошаговая инструкция:

  1. Импортируйте файл в Excel через Данные → Получить данные → Из файла → (выберите формат).
  2. В открывшемся окне Power Query выделите столбец с датами.
  3. Перейдите на вкладку Преобразование и выберите Тип данных → Дата.
  4. Если даты отображаются некорректно, добавьте пользовательский столбец с формулой:
    = Date.From(DateTime.FromOADate([Column1] - 2))

    Здесь [Column1] — название вашего столбца, а -2 компенсирует ошибку Excel.

  5. Удалите исходный столбец и переименуйте новый.
  6. Нажмите Закрыть и загрузить.

Преимущества 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

Как использовать:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Вернитесь в Excel, выделите столбец с датами и запустите макрос (Alt+F8 → Выбрать Convert1CDates → Выполнить).

Для дат до 1900 года замените в коде DateSerial(1900, 1, 1) на DateSerial(1899, 12, 31).

⚠️ Внимание: Макросы работают только в файлах с расширением .xlsm (с поддержкой макросов). Если вы сохраняете файл как .xlsx, код будет утерян.

Расширенная версия макроса может включать проверку на текстовые даты (например, «10.05.2026») и их автоматическое преобразование в числовой формат.

Способ 5: Настройка экспорта в 1С (оптимальное решение)

Лучший способ избежать проблем с датами — правильно настроить экспорт прямо в 1С. Это избавит от необходимости правки в Excel и гарантирует корректное отображение.

Как настроить экспорт в 1С:

  1. В отчёте или обработке, откуда экспортируются данные, найдите параметры выгрузки (обычно Файл → Сохранить как... или Ещё → Выгрузить).
  2. Выберите формат Excel (.xlsx) вместо CSV или TXT.
  3. В настройках экспорта (если есть) укажите:
    • 📑 Формат даты: «ДД.ММ.ГГГГ» (а не «ГГГГ-ММ-ДД»).
    • 🔢 Тип данных: «Дата» (а не «Строка» или «Число»).
  • Если используете 1С:EnterpriseData или Универсальный формат обмена, проверьте шаблон выгрузки — в нём должен быть указан тип поля Date.
  • Пример настройки для 1С:Бухгалтерия 3.0:

    1. Откройте отчёт (например, «Оборотно-сальдовая ведомость»).
    2. Нажмите Ещё → Выгрузить.
    3. В окне выгрузки выберите Excel и отметьте галочку Сохранять форматы.
    4. Если в вашей конфигурации 1С нет таких настроек, обратитесь к программисту — он может доработать обработку экспорта, чтобы даты передавались в Excel уже в корректном формате.

      Формат экспорта из 1С Результат в Excel Нужна ли правка?
      Excel (.xlsx) с сохранением форматов Дата отображается корректно ❌ Нет
      CSV или TXT Число (например, 45678) или текст ✅ Да
      Excel (.xls) (старый формат) Возможны ошибки с датами до 1900 года ⚠️ Иногда
      XML или JSON Зависит от схемы данных ✅ Обычно да

      Типичные ошибки и как их избежать

      Даже опытные пользователи допускают ошибки при работе с датами из 1С. Вот самые распространённые и способы их решения:

      • 🗓️ Дата сдвинута на 4 года (например, «2020» вместо «2026»):

        Причина: 1С использовала точку отсчёта 1904 год, а вы применили формулу для 1900 года. Решение: замените в формуле 1900 на 1904 или добавьте +1462 (разница в днях между 1900 и 1904 годами).

      • ❌ Вместо даты отображается ######:

        Причина: столбец слишком узкий для отображения даты в числовом формате. Решение: растяните столбец или примените формат Дата.

      • 🔢 Дата стала текстом (например, «45678» не преобразовывается):

        Причина: Excel воспринял число как текст. Решение: используйте функцию =ЗНАЧЕН(), чтобы преобразовать текст в число, а затем примените формулу даты.

      • 📅 Дата отображается как «00.01.1900»:

        Причина: в ячейке было пустое значение или ноль. Решение: добавьте проверку на пустые ячейки в формулу: =ЕСЛИ(A1=0;"";ДАТА(1900;1;1)+A1-2).

    Ещё одна частая проблема — разные региональные настройки в 1С и Excel. Например, если в 1С дата записана как «DD.MM.YYYY», а в Windows установлен американский формат «MM/DD/YYYY», Excel может неправильно интерпретировать день и месяц. Чтобы избежать этого, перед экспортом проверьте:

    1. Формат даты в настройках 1С (Сервис → Параметры → Форматы).
    2. Региональные настройки 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.