
Не найдя ничего с помощью поиска здесь, и больше из любопытства, чем по необходимости, я заметил следующее, используя MS Excel 2010 на ПК с WIN7.
Форматированная числовая ячейка с буквенно-пробеловой кодировкой, например
4 P
(без знаков равенства и плюса, но с пробелом)
становится, при нажатии Return:
0.666…
Сходным образом,
1 А
результаты в
0.041666…
Однако для некоторых других комбинаций букв, пробелов и чисел, таких как:
2 Т
или
7 К
Таким образом, по-видимому, здесь не происходит какого-либо общего процесса преобразования.
С другой стороны, если ячейка была отформатирована как «Общий», она преобразуется
4 P на «4.00 PM» и автоматически изменяет формат ячейки на Пользовательский.
Я вижу в этом смысл, но не могу найти никаких указаний на то, почему или как это преобразует «4 P» или «1 A», но не некоторые другие буквенно-пространственно-числовые комбинации в число.
Если предположить, что это происходит на чужих машинах, может ли кто-нибудь объяснить, что здесь происходит?
решение1
Чего вы, похоже, не знаете, так это того, что в Excel нет такого понятия, как "настоящая" дата/время. Обратите внимание, что даты и время — это всего лишь (часть) даты/времени. Даты/время на самом деле хранятся как числа.
Чтобы заставить работать datetimes, когда вы вводите что-то, чтовыглядиткак дата-время в Excel, он, в большинстве случаев, преобразует его в правильное числовое представление. Если формат ячейки - Текст, Excel не преобразует его.
Если формат — Число, преобразованное число будет отображено как число. Если формат даты, будет отображена дата. Если формат — Общий, Excel также обновит формат и преобразует его в число.
Поэтому, когда вы вводите текст 4 p
(обратите внимание, что строчные буквы тоже работают), если формат не является текстовым, он всегда преобразуется в 0.666…
, но то, что отображается, зависит от формата ячейки.
Само число datetime — это количество дней с момента0Янв 1900. Дробная часть суток, или, другими словами, времени. Таким образом 4 p
→ 4 PM
→ 16/24
→ 0.666…
и 1 a
→ 1 AM
→ 1/24
→ 0.041666…
.
Технически говоря, даже несмотря на то, что ячейка показывает, 4:00 PM
что она на самом деле содержит 0 Jan 1900, 4:00PM
, Excel оказался «достаточно умным», чтобы изменить формат на пользовательский, отображающий только время.