2

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

Вот пример формата, который не будет работать:

hh:mm:ss.000

(это не сработает, потому что если в качестве десятичного разделителя в локали используется что-то еще, кроме точки, вы увидите что-то вроде 22:31:34,854 в вашем отформатированном значении)

Я пробовал что-то вроде

hh:mm:ss\.000

чтобы Excel понял, что я действительно хочу точку. Однако Excel 2010 отказывается принять это как допустимый формат. (Я где-то читал, что \ это способ экранирования символа в строке формата Excel)

ОБНОВЛЕНИЕ (И ВИД ОТВЕТА)

В официальной документации Microsoft говорится, что вы можете получить формат для печати символа, который в противном случае был бы интерпретирован как метасимвол, поместив символ в двойные кавычки или экранировав его обратной косой чертой. Например, следующий формат #.##0\. будет форматировать 1234 как 1.234. на американском языке. Хотя этот пример бессмыслен, это доказывает, что экранирование символа точки действительно работает.

Так почему же он не будет работать при создании формата отметки времени с миллисекундами?

Ответ заключается в том, как Microsoft разработала спецификаторы формата. Эти метасимволы (например, 0 (ноль)) имеют различную интерпретацию в зависимости от их окружения. В некотором контексте 0 означает всегда иметь цифру в этом месте. Таким образом, размещение трех нулей в формате, как в #0.000 , означает форматирование 12 как 12.000 . Однако, когда три нуля помещаются после формата времени, они интерпретируются как означающие "миллисекунды". Если мы пропустим период непосредственно перед тремя нулями, то эти три нуля больше не будут "близки" к спецификаторам формата времени, и Excel запутается и больше не сможет определить, имеем ли мы в виду "миллисекунды" или заполнитель цифр. Следовательно, у него нет другого выбора, кроме как отказаться от формата. По крайней мере, это моя интерпретация того, почему это не работает.

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

1 ответ1

0

Боюсь, вам нужно использовать формат ячейки "Текст" и использовать формулу, которая выведет текстовое значение с необходимыми разделителями

=LEFT(A1;2) & ":" & MID(A1;4;2) & ":" & MID(A1;7;2) & "." & RIGHT(A1;3)

Excel не обрабатывает миллисекунды в именованных форматах ...

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