Разница во времени Excel чч: мм дает нечетный ответ - PullRequest
0 голосов
/ 25 апреля 2020

Я ошеломлен тем, что я делаю неправильно, я просто хочу, чтобы это показывало 39:54 (39 часов, 54 минуты). Я предполагаю, что это что-то очевидное, но формулы, которые я пробовал, дают мне 21:36 (?) Или 39.9. 39,9 имеет смысл, поскольку это 39 часов, но 0,9 относится к 54 минутам, которые составляют 90% от 60 минут.

Любая помощь очень ценится. Спасибо!

enter image description here

Ответы [ 3 ]

3 голосов
/ 25 апреля 2020

Вы делаете это неправильно.

=TEXT(M3-L3,"[hh]:mm")

Excel сохраняет дату / время как дни и доли дня, начиная с 1/1/1900, где эта дата = 1

M3-L3 - > разница в дате / времени

Чтобы отформатировать результат в виде часов: минут, вы используете [hh]:mm

hh в течение 24 часов; [hh] отобразит совокупные часы.

Итак, когда вы вычисляете (M3-L3) * 24, вы конвертируете сохраненное значение в часы. Но [hh]:mm ожидает, что форматируемое значение будет фактическим значением даты / времени. Отсюда ошибка.

Во втором примере, где вы показываете результат (m3-l3)*24, равен 39.9; Вы преобразовали разницу во времени в десятичные часы. 39.9 равно 39 часам + 0,9 часа, что соответствует 39 часам 54 минутам (0,9 * 60 минут = 54 минутам)

2 голосов
/ 25 апреля 2020

Вам не нужна функция TEXT. Вычтите один раз из другого и отформатируйте ячейки в произвольном формате [h]:mm

enter image description here

2 голосов
/ 25 апреля 2020

(Rant: возможности форматирования даты и времени в Excel очень ограничены и с ними трудно работать - я уверен, что это было здорово по сравнению с другими системами электронных таблиц в середине 1990-х, но Microsoft всегда была очень консервативна в отношении обновления Excel основные функции - так что даже сегодня, в 2020 году, в Excel нет встроенной формулы, эквивалентной DateTime.ParseExact, и он ВСЕГДА предпочитает настройки локального компьютера, что чертовски раздражает, поскольку мой компьютер установлен на en-GB (но использует yyyy-MM-dd как мое переопределение формата даты), поэтому невозможно легко проанализировать значения даты в формате США, argh) - и по-прежнему не поддерживается последовательный анализ значений ISO 8601 , что безумно для 2020 года.

В любом случае - учитывая эту предысторию в шаблонах Excel c, форматирование даты и времени и функции синтаксического анализа, поэтому неудивительно, что Excel не поддерживает форматирование hh как «общее количество часов» - оно всегда отображается в По модулю 24 (или по модулю 12, если вы укажете h)

* 1 014 * (Я убираю вышеприведенное утверждение, потому что ответ Рона на [hh]:mm работает, но он все еще недостаточно документирован, поскольку он не упомянут в документации Excel для TEXT() вообще )

Предполагая, что L2 и M2 правильно интерпретируются как значения даты + времени (я предполагаю, что L2 равно 2020-01-07 09:55 и M2 равно 2020-01-09 01:49 - и не 2020-01-07 09:55 и 2020-01-09 01:49 соответственно ), затем попробуйте следующее:

  1. Установите для формулы N2 значение = M2 - L2 - это должно привести к числовому значению с плавающей запятой, которое представляет собой число разниц в днях между двумя датами.
  2. Отформатируйте его вручную в O2 с помощью этой формулы

    = FLOOR( N2 * 24, 1 ) & ":" & ( ( N2 * 24 ) - TRUNC( N2 * 24 ) * 60 )
    

Обновление:

С извинениями перед @RonRosenfeld, примеры, приведенные на странице ExcelJet do , включают упоминание об использовании \[ и \] для форматирования значений прошедшего времени . Пример приведен в виде скриншота, который делает невозможным поиск (сейчас 2020, и поисковые системы по-прежнему не выполняют распознавание изображений - и браузеры также не выполняют поиск изображений на странице) . Я повторю информацию в текстовом виде, чтобы люди могли получить этот ответ:

С https://exceljet.net/custom-number-formats

Прошедшее время является особым случаем и требует особого обработки. Используя квадратные скобки, Excel предоставляет специальный способ отображения прошедших часов, минут и секунд. На следующем экране показано, как Excel отображает истекшее время на основе значения в D5, которое составляет 1,25 дня:

    A                                 B                     C
    Description                       Formula               Formatted Value
    -----------------------------------------------------------------------
1   Example elapsed time (days)       =1.25                 1.25
2   Elapsed hours (total hours)       =TEXT(B1, "[h]")      30
3   Elapsed hours with minutes        =TEXT(B1, "[h]:mm")   30:00
4   Elapsed minutes                   =TEXT(B1, "[m]")      1800
5   Elapsed minutes with seconds      =TEXT(B1, "[m]:ss")   1800:00
6   Elapsed seconds                   =TEXT(B1, "[ss]")     108000
7   Elapsed seconds with milliseconds =TEXT(B1, "[ss].00")  108000.00

Я не могу найти никакой авторитетной ссылки в документации Excel на поведение [], когда форматирование чисел как длительностей - так что технически это можно считать недокументированным поведением. Тем не менее, это, вероятно, задокументировано в автономных файлах справки более старых версий Excel, я знаю, что много полезной документации было потеряно, когда Office перешел к интерактивной справке в период с 2003 по 2013 год, grrrrrr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...