Предотвратите преобразование времени в числа с плавающей запятой в Excel.

Вопрос или проблема

Я импортировал табличные данные с веб-сайта, используя в Excel “Данные > Из Интернета”. Проблема в том, что время, например 47:38:00, автоматически переводится. Если я на него нажму, 01/01/1900 23:38:00 будет показано в строке формул, и при преобразовании данных в текст или общий, они преобразуются во float, 1.984722222.

Преобразование в float очень раздражает, так как это то, что отображается при извлечении данных из электронной таблицы. Есть ли способ заставить Excel не изменять данные и просто обрабатывать всё как исходное?

Данные не изменяются, изменяется только формат отображения.

Вы можете установить предпочитаемый формат отображения; например, для показанного 47:38:00 используйте (пользовательский) формат [чч]:мм:сс.

Квадратные скобки [] говорят Excel не переходить к следующей более высокой единице измерения – дням, а оставаться с часами, независимо от того, насколько велико число; без скобок вы бы увидели 1д 23:38:00 или что-то подобное. Например, использование [мм]:сс даст вам 2858:00 в минутах и секундах.

Другой ответ не содержал решения, которое я искал. Я столкнулся с двумя отдельными проблемами при работе с датами из CSV-файла. Я решил поделиться своими результатами здесь для других, у кого такие же проблемы.

1/2) Использование дат в формуле

Проблема в том, что даты преобразуются во float, как показано ниже:

[A2]
9/19/2020 3:38

[Формула]
=CONCAT("Дата: ", A2)

[Вывод]
Дата: 44093.1506365741

Нам просто нужно отформатировать дату в формуле. Это работает, если данные хранятся в виде даты ИЛИ float:

[A2]
9/19/2020 3:38

[Формула]
=CONCAT("Дата: ", TEXT(A2,"гггг-мм-дд чч:мм:сс"))

[Вывод]
Дата: 2020-09-19 03:38:05

Функция TEXT() — это простой способ форматирования даты. Вышеуказанное основано на формате даты ISO 8601.

Вы можете альтернативно использовать другие функции даты, такие как: DAY(A2) = 19

2/2) Преобразование ячеек даты в текстовые ячейки (для CSV-файлов)

Это обычно легко сделать. Обычно вы можете щелкнуть правой кнопкой мыши на диапазоне ячеек и выбрать Формат ячеек, затем изменить тип на “Текст”. Это отобразит дату как исходный текст, вместо попытки интерпретировать вещественное значение.

Однако если у вас есть CSV-файл, открытие его напрямую в Excel приведет к тому, что изменение типа на “Текст” покажет вещественное значение вместо даты. Я считаю, это потому что, хотя Excel “не изменяет данные” для обычной электронной таблицы, он, похоже, изменяет значения, если открыть CSV напрямую в Excel. Я также попробовал копировать ячейки и “вставлять только значения”, но это также привело к вещественным значениям.

Чтобы исправить это, мы просто должны загрузить CSV по-другому:

  1. В Excel перейдите на вкладку “Данные”, затем нажмите “Из текста/CSV”.
  2. В всплывающем окне выберите “Преобразование данных”.
  3. В “Редакторе Power Query” щелкните правой кнопкой мыши на своих столбцах даты и выберите “Изменить тип” -> Текст -> Заменить текущее
  4. Закройте редактор Power Query и нажмите “Сохранить [изменения]”
  5. CSV будет добавлено в качестве новой вкладки

Итоговый результат выглядит так же. Однако если вы форматируете столбец как “Текст”, он останется отформатированным как дата, а не как вещественное число. Это ключевое отличие по сравнению с открытием CSV напрямую.

Мне интересно, есть ли у кого-то более простые решения для этого, если есть, оставьте комментарий!

Ответ или решение

Чтобы избежать преобразования временных данных в десятичные дроби в Microsoft Excel, особенно когда вы импортируете данные с веб-сайтов или из CSV-файлов, необходимо принимать во внимание, как Excel интерпретирует время и дату. Проблема, описанная вами, связана с тем, что Excel интерпретирует временные значения как дату и время сначального дня, и при изменении формата ячейки на текстовый формат он отображает время в формате числа с плавающей запятой. Давайте рассмотрим теоретическую часть, приведем пример и разберем, как можно применять это на практике.

Теория:

При вводе временного значения, такого как 47:38:00, Excel отображает его как дата и время (например, 01/01/1900 23:38:00). Такое преобразование связано с тем, что Excel хранит даты и времена как числа, где целая часть означает количество дней с начальной даты (обычно 1 января 1900 года), а дробная часть — долю суток. Так, значение 47:38:00 будет интерпретировано как 1 день и 23 часа 38 минут, что соответствует числу 1.984722222.

Пример:

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

  • Исходные данные: 47:38:00
  • Интерпретация Excel: 01/01/1900 23:38:00, что эквивалентно 1.984722222 в числе с плавающей запятой.

Применение:

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

  1. Использование форматирования:

    • Форматирование ячейки: Установите пользовательский формат [hh]:mm:ss. Это заставит Excel воспринимать любое значение как часы и минуты, игнорируя дни.
    • Использование функции TEXT(): При необходимости использования временных данных в формулах, например, =CONCAT("Time: ", TEXT(A2,"[hh]:mm:ss")). Это позволит отобразить время в нужном формате в результате формулы.
  2. Импорт CSV-файлов с использованием Мастера импорта:

    • Если у вас есть CSV-файл, запустите Мастер импорта Excel. Выберите вкладку "Данные", затем воспользуйтесь опцией "Из текста/CSV".
    • В окне Мастера импорта выберите "Трансформация данных".
    • В редакторе Power Query щелкните правой кнопкой по колонке с временем и измените тип с "Дата/время" на "Текст". Это гарантирует, что при последующем импорте данные будут оставаться в текстовом формате.

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

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

Если у вас есть другие идеи или предложения по упрощению данного процесса, не стесняйтесь делиться ими с сообществом — обмен опытом помогает находить новые, более эффективные решения.

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

Капча загружается...