Ошибка округления в функции SECOND при преобразовании чч: мм: сс.000 в миллисекунды в Excel?

Я пытаюсь написать функцию для преобразования столбца времени, введенного в формате [чч]:мм:сс.000, в миллисекунды, используя следующую функцию:

=MINUTE(C75)*60000+SECOND(C75)*1000+RIGHT(TEXT(C75, "hh:mm:ss.000"),3)

Играя с числами на калькуляторе, я пришел к выводу, что проблема заключается в том, что функция SECOND() округляет до ближайшей секунды на основе миллисекунд, а не копирует точное значение. Например, 00:17:39.320 будет преобразовано правильно, а 00:17:39.760 — нет, так как функция будет преобразовывать секунды, используя 40, а не 39.

Кто-нибудь знает способы обойти это?

Благодарю вас!


person Mia    schedule 06.03.2020    source источник
comment
Тогда не используйте Second. Используйте правильные 6 символов × 1000   -  person chris neilsen    schedule 06.03.2020
comment
Спасибо за предложение. Возможно, что-то не так с моим числовым форматом, потому что он тоже не работает и не работает должным образом. Я использовал формат [чч]:мм:сс.000;@. Ячейка будет выглядеть правильно, когда я ввожу значение, но когда я щелкаю по ней, Excel преобразует время в чч: мм: сс AM / PM в строке формул и изменяет значение в ячейке, когда я щелкаю. Вы знаете, как это исправить?   -  person Mia    schedule 06.03.2020
comment
Поддержка Excel для разрешения времени в мс неоднородна. Многие (большинство?) функций времени работают только с секундами. Предложение Джима использовать базовое числовое значение, вероятно, лучше всего. Тогда вам придется сражаться с желанием Excel переформатировать ячейки!   -  person chris neilsen    schedule 06.03.2020


Ответы (1)


Умножьте свое время на 86400000

=C75 * 86400000

Excel хранит время как часть даты. 12:00 полдень будет 0,5, потому что это половина от 24. Таким образом, 24 часа, умноженные на 60 минут, умноженные на 60 секунд, дают вам общее количество секунд, умноженное на 1000 миллисекунд, дает желаемый результат.

person Jim L    schedule 06.03.2020
comment
Это даст правильный номер, но он выйдет в следующем формате: 593360:00:00.000 (где 593360 — правильное количество мс). Если я изменю формат на числовой или общий, вычисления перестанут выполняться правильно. Вы знаете, почему это так? - person Mia; 06.03.2020
comment
Попробуйте отформатировать в учетную запись или число с 0 десятичными знаками. - person Jim L; 06.03.2020