Excel = TIME () со значениями свыше 24 часов отображается неправильно

397
Rodin10

Я пытаюсь отобразить время за 24 часа в Excel с помощью, =TIME()но когда значения превышают 24 часа, они отображаются неправильно. Например, у меня =TIME(27;42,81;49)должно быть 24:59. Вместо этого он отображается как 03:42. Я уже изменил формат на [чч: мм]. Это прекрасно работает при выполнении =SUM()для 3 отдельных значений.

0

3 ответа на вопрос

3
Seth

Официальная статья о TIME () предполагает, что он должен отображаться только 24 часа. Таким образом, отображение 03:42будет правильным. Если вы хотите работать с произвольным числом часов, минут и секунд, вы, скорее всего, не сможете использовать эту функцию, а вместо этого, например, формат ячейки.

Ах, я вижу, спасибо. Что вы предлагаете мне использовать? Rodin10 6 лет назад 0
Как уже упоминалось, формат ячейки также поддерживает большие числа. Непонятно, почему вы используете `TIME ()` в первую очередь. В вашем примере есть вся базовая информация, которая вам понадобится, чтобы просто записать `24: 59: 00` в ячейку. Seth 6 лет назад 0
Ну, это происходит из фрагмента кода, который преобразует количество секунд в часы, минуты и секунды. Набрав, что я сделал, я понял, что будет проще напечатать значения напрямую, без использования формул Excel. Спасибо за помощь. Rodin10 6 лет назад 0
2
AFH

TIME()Функция работает, как указано. Из онлайнового руководства, первый параметр определяется: -

Требуется час . Число от 0 (ноль) до 32767, представляющее час. Любое значение больше 23 будет разделено на 24, а остаток будет считаться значением часа. Например, TIME (27,0,0) = TIME (3,0,0) = .125 или 3:00 AM.

Если вы хотите показать часы выше 23, вам нужно будет создать и отформатировать свои собственные значения, например, если часы, минуты и секунды установлены A1:C1, установите D1:

=A1/24+B1/1440+C1/86400 

Теперь вы просто форматируете ячейку как [hh]:mm:ss, как предложено в ответе Аганджу.


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

В качестве альтернативы, следующее сгенерирует ячейку, отформатированную так, как вы хотите:

=TEXT(ROUNDDOWN(D1*24),"##")&":"&TEXT(ROUNDDOWN(MOD(D1*1440,60)),"##")&":"&TEXT(ROUNDDOWN(MOD(D1*86400,60)),"##") 

Строго, =ROUND()вместо этого следует использовать поле секунд =ROUNDDOWN(), но это вызовет проблемы со значениями секунд 59,5 и выше.

Если важно ближайшее округление, то D1сначала его нужно округлить до ближайшей секунды (1/86400), например, установив E1:

=ROUND(D1*86400)/86400 

Форматированная ячейка будет тогда:

=TEXT(ROUNDDOWN(E1*24),"##")&":"&TEXT(ROUNDDOWN(MOD(E1*1440,60)),"00")&":"&TEXT(ROUNDDOWN(MOD(E1*86400,60)),"00") 

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

Я только что видел ответ Аганджу, и использование `[hh]: mm: ss` в качестве формата ячейки является гораздо более точным решением, чем построение строки вывода вручную. AFH 6 лет назад 0
0
Aganju

Обычные дни имеют только 24 часа, поэтому Excel начинает отсчет с 0 снова, как на часах. Это код формата "чч: мм", который используется по умолчанию для времени

Если вы хотите, чтобы часы накапливались более 24, вам нужно использовать код соответствующего формата: "[hh]:mm"- время [и количество ]часов делают их неограниченными.

Обратите внимание, что это работает и минуты - вы можете использовать "[mm]:ss"в качестве кода формата, который будет считаться минуты навсегда.

Я не сталкивался с этим раньше: хорошо знать, и гораздо легче, чем мой, ответить на вопрос о форматировании. Благодарю. Я бы хотел проголосовать, но вы не учли входные данные, поэтому ваш ответ только частичный. AFH 6 лет назад 0