Как преобразовать продолжительность в excel? (например) с 0ч 31м 3с до 00:31:03? - PullRequest
0 голосов
/ 05 августа 2020

Как преобразовать время продолжительности в excel?

Мне нужно преобразовать продолжительность из этого формата: 0h 31m 3s в этот формат: 00:31:03 Есть идеи, как это сделать?

Спасибо !

Ответы [ 4 ]

4 голосов
/ 05 августа 2020

Предполагая, что ваш текст 0h 31m 3s находится в ячейке b2, вы можете использовать следующую формулу:

=--SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"h ",":"),"m ",":"),"s","")

И затем установите формат ячейки B2 на Time вместо General.

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

=TEXT(--SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"h ",":"),"m ",":"),"s",""),"hh:mm:ss")

Третий вариант, который легче понять, если его разбить на части, - это вычеркнуть число часов, минут и секунд. Затем поместите эти формулы в соответствующую часть ВРЕМЕНИ (часы, минуты, секунды):

Hours
=LEFT(B2,FIND(" ",B2)-2)

Minutes
=MID(B2,FIND(" ",B2)+1,FIND("m",B2)-FIND(" ",B2)-1)

Seconds
=LEFT(RIGHT(B2,3),2)

Combined in Time
=TIME(LEFT(B2,FIND(" ",B2)-2),MID(B2,FIND(" ",B2)+1,FIND("m",B2)-FIND(" ",B2)-1),LEFT(RIGHT(B2,3),2))

Вариант 3, аналогичный варианту 1, возвращает число для времени, с которым Excel может работать намного проще, чем текст. Ключ к тому, чтобы он отображался так, как вы хотите, - это настроить форматирование ячейки на время использования пользовательского формата ЧЧ: ММ: СС.

PO C

2 голосов
/ 05 августа 2020

Измененный ответ @RonRosenfeld от ЗДЕСЬ :

=SUM(IFERROR(FILTERXML("<t><s>" & SUBSTITUTE(LOWER(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"h"," h"),"m"," m"),"s"," s"))," ","</s><s>") & "</s></t>","//s[contains(.,"&{"'h'","'m'","'s'"}&")]/preceding-sibling::*[1]")/{24,1440,86400},0))

В зависимости от версии может потребоваться ввод с помощью Ctrl-Shift-Enter вместо Enter при выходе из режима редактирования.

введите описание изображения здесь

1 голос
/ 05 августа 2020

В качестве альтернативы SUBSTITUTE s, если у вас есть доступ к TEXTJOIN, вы можете использовать:

=--TEXTJOIN(":",,TRIM(MID(" "&A1,FIND({"h";"m";"s"}," "&A1)-2,2)))

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

1 голос
/ 05 августа 2020

Excel не знает промежуток времени между меткой времени и продолжительностью, оба они одинаковы:

Когда я ввожу «00:31:03», форматирование ячейки автоматически становится:

hh:mm:ss

Когда я меняю форматирование ячейки на:

hh\h mm\m ss\s

Затем значение становится «00h 31m 03s».

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

...