Перейти к содержимому

Дата в эксель не читается как дата

  • автор:

Дата в эксель не читается как дата

Типичная проблема. Выгрузили отчет из учетной системы в виде массива. Пытаемся отфильтровать строки по столбцу с датами, а фильтр не хочет воспринимать даты — он фильтрует их как текст.

Наблюдаем мы такую картину:

Не работает фильтр по дате. Что делать?

Никакие наши манипуляции не приводят к нужному результату. Решение есть в надстройке ЁXCEL.

Выделяем столбец с датами и переходим во вкладку «ЁXCEL» главного меню, нажимаем кнопку «Ячейки», в выпавшем списке выбираем команду «Преобразовать текст в дату»:

ne-rabotaet-filtr-po-date-chto-delat_2.png

Проверяем фильтр — все как нужно:

Исправление чисел, превратившихся в даты

Испорченные данные

При импорте в Excel данных из внешних программ, иногда возникает весьма неприятная проблема — дробные числа превращаются в даты:
Так обычно происходит, если региональные настройки внешней программы не совпадают с региональными настройками Windows и Excel. Например, вы загружаете данные с американского сайта или европейской учётной системы (где между целой и дробной частью — точка), а в Excel у вас российские настройки (где между целой и дробной частью — запятая, а точка используется как разделитель в дате).
При импорте Excel, как положено, пытается распознать тип входных данных и следует простой логике — если что-то содержит точку (т.е. российский разделитель дат) и похоже на дату — оно будет конвертировано в дату. Всё, что на дату не похоже — останется текстом. Давайте рассмотрим все возможные сценарии на примере испорченных данных на картинке выше:

  • В ячейке A1 исходное число 153.4182 осталось текстом, т.к. на дату совсем не похоже (не бывает 153-го месяца)
  • В ячейке A2 число 5.1067 тоже осталось текстом, т.к. в Excel не может быть даты мая 1067 года — самая ранняя дата, с которой может работать Excel — 1 января 1900 г.
  • А вот в ячейке А3 изначально было число 5.1987, которое на дату как раз очень похоже, поэтому Excel превратил его в 1 мая 1987, услужливо добавив единичку в качестве дня:

Неправильная дата

Еще одна неправильная дата

Вот такие варианты. И если текстовые числа ещё можно вылечить банальной заменой точки на запятую, то с числами превратившимися в даты такой номер уже не пройдет. А попытка поменять их формат на числовой выведет нам уже не исходные значения, а внутренние коды дат Excel — количество дней от 01.01.1900 до текущей даты:

Неправильное число после изменения формата

Лечится вся эта история тремя принципиально разными способами.

Способ 1. Заранее в настройках

Если данные ещё не загружены, то можно заранее установить точку в качестве разделителя целой и дробной части через Файл — Параметры — Дополнительно (File — Options — Advanced) :

Настройка разделителей в окне параметров Excel

Снимаем флажок Использовать системные разделители (Use system separators) и вводим точку в поле Разделитель целой и дробной части (Decimal separator) .

После этого можно смело импортировать данные — проблем не будет.

Способ 2. Формулой

Если данные уже загружены, то для получения исходных чисел из поврежденной дата-тексто-числовой каши можно использовать простую формулу:

Формула исправления чисел из дат

=—ЕСЛИ( ЯЧЕЙКА(«формат»;A1)=»G» ; ПОДСТАВИТЬ(A1;».»;»,») ; ТЕКСТ(A1;»М,ГГГГ») )

В английской версии это будет:

=—IF (CELL («format «;A1)=»G»; SUBSTITUTE (A1;».»;»,»); TEXT (A1;»M ,YYYY «))

Логика здесь простая:

  • Функция ЯЧЕЙКА (CELL) определяет числовой формат исходной ячейки и выдаёт в качестве результата «G» для текста/чисел или «D3» для дат.
  • Если в исходной ячейке текст, то выполняем замену точки на запятую с помощью функции ПОДСТАВИТЬ (SUBSTITUTE) .
  • Если в исходной ячейке дата, то выводим её в формате «номер месяца — запятая — номер года» с помощью функции ТЕКСТ (TEXT) .
  • Чтобы преобразовать получившееся текстовое значение в полноценное число — выполняем бессмысленную математическую операцию — добавляем два знака минус перед формулой, имитируя двойное умножение на -1.

Способ 3. Макросом

Если подобную процедуру лечения испорченных чисел приходится выполнять часто, то имеет смысл автоматизировать процесс макросом. Для этого жмём сочетание клавиш Alt + F11 или кнопку Visual Basic на вкладке Разработчик (Developer) , вставляем в нашу книгу новый пустой модуль через меню Insert — Module и копируем туда такой код:

Sub Fix_Numbers_From_Dates() Dim num As Double, cell As Range For Each cell In Selection If Not IsEmpty(cell) Then If cell.NumberFormat = "General" Then num = CDbl(Replace(cell, ".", ",")) Else num = CDbl(Format(cell, "m,yyyy")) End If cell.Clear cell.Value = num End If Next cell End Sub

Останется выделить проблемные ячейки и запустить созданный макрос сочетанием клавиш Alt + F8 или через команду Макросы на вкладке Разработчик (Developer — Macros) . Все испорченные числа будут немедленно исправлены.

Ссылки по теме

  • Как Excel на самом деле работает с датами и временем
  • Замена текста функцией ПОДСТАВИТЬ
  • Функция ВПР и числа-как-текст

Преобразование дат из текстового формата в формат даты

В некоторых случаях даты могут быть отформатированы и храниться в ячейках в виде текста. Например, вы могли ввести дату в ячейку, которая была отформатирована как текст, или данные могли быть импортированы или вставлены из внешнего источника данных в виде текста.

Даты, отформатированные как текст, выравниваются по левому краю в ячейке (а не по правому краю). Если включена проверка ошибок, текстовые даты с двумя цифрами лет также могут быть помечены индикатором ошибки: .

Поскольку функция проверки ошибок в Excel распознает даты в текстовом формате с двузначным номером года, можно воспользоваться средством автозамены и преобразовать их в даты в формате даты. Функцию DATEVALUE можно использовать для преобразования большинства других типов текстовых дат в даты.

Преобразование текстовых дат с двумя цифрами лет с помощью проверки ошибок

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

Ячейки с зеленым индикатором ошибки в левом верхнем углу

Индикатор ошибки можно использовать для преобразования дат из текста в формат даты.

Примечания: Сначала убедитесь, что проверка ошибок включена в Excel. Для этого:

  1. Щелкните Файл >Параметры >Формулы. В Excel 2007 нажмите кнопку Microsoft Office , а Excel параметры >формул.
  2. В разделе «Проверка ошибок» установите флажок «Включить фоновую проверку ошибок». Все найденные ошибки помечаются треугольником в левом верхнем углу ячейки.
  3. В разделе «Правила проверки ошибок» выберите ячейки, содержащие годы, представленные в виде двух цифр.

Выполните следующую процедуру, чтобы преобразовать форматированную текстом дату в обычную дату:

    Выделите ячейку или диапазон смежных ячеек с индикатором ошибки в верхнем левом углу. Дополнительные сведения см. в разделе «Выбор ячеек, диапазонов, строк или столбцов на листе».

Совет: Чтобы отменить выделение ячеек, щелкните любую ячейку на листе.

  • Нажмите кнопку ошибки, которая отображается рядом с выделенными ячейками. Кнопка ошибки
  • В меню выберите команду Преобразовать XX в 20XX или Преобразовать XX в 19XX. Если вы хотите закрыть индикатор ошибки без преобразования числа, нажмите кнопку «Пропустить ошибку». Команды преобразования дат
    Текстовые даты с двумя цифрами лет преобразуют в стандартные даты с четырехзначными годами. Преобразованные даты
    После преобразования ячеек с текстовыми значениями можно изменить внешний вид дат путем применения формата даты.
  • Если на листе есть даты, которые, возможно, были импортированы или вставлены, в итоге выглядят как ряд чисел, как показано на рисунке ниже, вы, вероятно, захотите переформатировать их, чтобы они отображались как короткие или длинные даты. Формат даты также будет полезен, если вы хотите отфильтровать, отсортировать или использовать его в вычислениях дат.

    столбец дат в текстовом формате

    1. Выделите ячейку, диапазон ячеек или столбец, которые нужно переформатировать.
    2. Щелкните «Формат номера» и выберите нужный формат даты.

    Формат короткой даты выглядит следующим образом:

    изменение формата данных на краткий формат даты с помощью ленты

    Длинная дата содержит дополнительные сведения, как на этом рисунке:

    кнопка на ленте для преобразования в длинный формат даты

    Преобразование дат в текстовом формате с помощью функции ДАТАЗНАЧ

    Чтобы преобразовать текстовую дату в ячейке в серийный номер, используйте функцию DATEVALUE. Затем скопируйте формулу, выделите ячейки, содержащие текстовые даты, и используйте специальную вставку, чтобы применить к ним формат даты.

    1. Выделите пустую ячейку и убедитесь, что ее число имеет формат «Общие».
    2. В пустой ячейке сделайте следующее.
      1. Введите =DATEVALUE(
      2. Щелкните ячейку, содержащую дату в текстовом формате, которую следует преобразовать.
      3. ВВОД )
      4. Нажмите клавишу ВВОД, и функция DATEVALUE возвращает серийный номер даты, представленной текстовой датой.
        Что такое Excel серийный номер? В Excel даты хранятся в виде порядковых номеров, что позволяет использовать их в вычислениях. По умолчанию 1 января 1900, является серийным номером 1, а 1 января 2008 г. — серийным номером 39448, так как это 39 448 дней после 1 января, 1900.To скопируйте формулу преобразования в диапазон смежных ячеек, выделите ячейку, содержащую введенную формулу, а затем перетащите маркер заполнения по диапазону пустых ячеек, которые соответствуют диапазону ячеек, содержащих текстовые даты.

      Дополнительные сведения

      Вы всегда можете задать вопрос эксперту в Excel Tech Community или получить поддержку в сообществах.

      Дата в эксель не читается как дата

      Argument ‘Topic id’ is null or empty

      Сейчас на форуме

      © Николай Павлов, Planetaexcel, 2006-2023
      info@planetaexcel.ru

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

      ООО «Планета Эксел»
      ИНН 7735603520
      ОГРН 1147746834949
      ИП Павлов Николай Владимирович
      ИНН 633015842586
      ОГРНИП 310633031600071

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *