1

У меня есть файл CSV, который содержит строки, которые должны интерпретироваться как даты с минутами, секундами и миллисекундами.

В частности записи выглядят так:

"07/31/2013 23:59:32.864",otherdata,moredata
"08/01/2013 00:00:02.863",otherdata,moredata

Для 31.07.2013 Excel решила использовать "Общий" формат и отображает значение как

07/31/2013 23:59:32.864

Это как и ожидалось.

Тем не менее, на 01/01/2013, Excel выбирает "Пользовательский" формат «mm:ss.0» и отображает значение как

00:02.9

Это не помогает Если я изменю формат ячейки на "Общий", значение становится 41282.00003.

Как ни странно, если я поменяю август на июль (например, 01.07.2013), отображаемое значение теперь

07/01/2013  00:00:03

с "Custom" форматом "дд / мм / гггг чч: мм".

Как я могу помешать Excel выбирать различные форматы на основании случайных причин и согласиться на один формат для отображения этих дат?

Обратите внимание, что это не имеет ничего общего с запутанными днями Excel в течение нескольких месяцев. Дата 13.08.2013 (где 8, очевидно, месяц) теряет свои миллисекунды и отображается как

08/13/2013  23:01:06

с "Custom" форматом "мм: сс.0".

Это совершенно странно.

2 ответа2

5

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

41282.00003 - 8 января 2013 года, а не 1 августа 2013 года.

Excel попытается интерпретировать дату в соответствии с региональными настройками вашего компьютера. Если региональными настройками являются DMY, а дата интерпретации - 31.07.2013, порядок DMY не будет работать, и Excel будет интерпретировать данные как текст. Это то, что вы видите. Текст, который выглядит как значение даты / времени. Попробуйте отформатировать это видимое значение даты / времени по-другому. Вы увидите, что не можете, потому что это текст.

Но если следующий ряд данных имеет 08/01/2013, это очень хорошо вписывается в схему DMY региональных настроек и будет возвращено 8 января 2013 года. Вы можете изменить формат ячейки на пользовательский формат

dd/mm/yyyy hh:mm:ss.000

и будет отображаться как 08/01/2013 00:00:02.863

Значение в ячейке A1 - это текстовое значение, а не реальное время даты. Формат ячейки "Общий", и никакое количество форматирования чисел не изменит его внешний вид.

Значение в ячейке A2 представляет собой реальное значение даты / времени, отформатированное в указанном выше пользовательском формате.

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

Давайте внимательнее посмотрим на вторую (реальную) дату. 08/01/2013 00:00:02.863 формате "Общие" отображается как 41282.00003 а в формате с правильной датой - 8 января 2013 года. Хорошо.

Если вы увеличите десятичные дроби для общего формата, вы обнаружите, что фактическим базовым числом является 41282.0000331366 . Этот номер имеет 15 цифр.

Отформатированный как дата, вы можете отредактировать его и изменить день с 8 до 7. Результат будет отображаться в "общем" формате как 41281.00003 , но если вы увеличите количество отображаемых цифр, вы увидите, что это число 41281.00003472220

А?

Как так? Мы только вычли один день, поэтому должно измениться только число перед десятичной запятой.

Ну, Excel имеет встроенную точность всего 15 цифр для любого числа. Числа с большим количеством цифр будут округлены или последние цифры будут заменены нулями. Кроме того, в Excel существует известная ошибка, которая влияет на точность чисел при достижении 15-значного предела.

Я думаю, что это один пример, где ошибка поднимает свою уродливую голову.

Когда часть даты нашего значения даты / времени изменяется, это также приведет к переоценке десятичных дробей, что приведет к некоторому округлению и непоследовательному поведению после четвертого десятичного знака. Следовательно, фактические секундные и миллисекундные данные будут отключены.

Посмотрите, поможет ли этот скриншот уточнить:

Значения в столбцах B – D - все ссылочные столбцы A. Единственная разница между A1 и A2 - это ручное изменение даты с 08/01 на 07/01 (где 01 - январь, согласно региональным настройкам DMY).

"Общий" формат показывает оба значения с десятичным значением x.0003. Расширение десятичных дробей показывает, что после четвертой десятичной дроби существует значительная разница в десятичных дробях.

Поскольку желаемый конечный результат представляет собой значение, которое показывает секунды и миллисекунды, десятичные дроби после 4-го десятичного разделителя действительно имеют значение, и когда значение отформатировано в пользовательском формате, который показывает секунды и миллисекунды, эта разница отображается (в столбце A).

Также обратите внимание на три ячейки с числами, состоящими всего из 15, 16 и 17 цифр, равных 1, и как Excel просто заменяет любую цифру после 15 на ноль, поскольку она не может отображать более высокую точность.

-2

Очень простое решение:

  1. Выбрать все даты столбца.
  2. Выберите кнопку «Общие».
  3. Номер сортировки и номер сохраняются в виде текста отдельно.

  4. Вы найдете данные в виде числа и даты в виде:

  5. преобразовать формат даты в текст в столбец с опцией с разделителями и другими словами / - и т. д., как показано на вашей дате:

  6. Примените формулу даты как:

  7. Затем сделайте специальную вставку даты (скопируйте и нажмите специальную вставку).

Ваша проблема решена.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .