(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
соответственно ), затем попробуйте следующее:
- Установите для формулы
N2
значение = M2 - L2
- это должно привести к числовому значению с плавающей запятой, которое представляет собой число разниц в днях между двумя датами. Отформатируйте его вручную в 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.