Многократный формат даты для одного столбца? - PullRequest
0 голосов
/ 29 октября 2018

Можем ли мы поместить команду ИЛИ для произвольного времени в один столбец? У меня есть несколько форматов времени в одном столбце Excel. Например:

Timing
30 min
31 sec
4 min 20 sec  
1 hr 2 min
3 hr
1 hr 23 min 30 sec

Я хочу преобразовать его в формат времени: hh:mm:ss, чтобы можно было вычислять среднее значение за все время. Как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Вот более короткая формула:

=TIME(IF(IFERROR(FIND("hr";$A2);0)=0;0;IFERROR(MID($A2;IFERROR(FIND("hr";$A2);0)-3;2);MID($A2;IFERROR(FIND("hr";$A2);0)-2;1)));IF(IFERROR(FIND("min";$A2);0)=0;0;IFERROR(MID($A2;IFERROR(FIND("min";$A2);0)-3;2);MID($A2;IFERROR(FIND("min";$A2);0)-2;1)));IF(IFERROR(FIND("sec";$A2);0)=0;0;IFERROR(MID($A2;IFERROR(FIND("sec";$A2);0)-3;2);MID($A2;IFERROR(FIND("sec";$A2);0)-2;1))))

Примечание: приведенная выше формула содержит точку с запятой (;) в качестве разделителя. Замените на запятую (,), если это системный разделитель.

Если честно, я не пытался расшифровать формулу @ Foxfire.

Не забудьте применить пользовательский формат времени к ячейке результата: [ч]: мм: сс custom format

Для пояснения см. Разбивку по длинной формуле: breakdown

0 голосов
/ 29 октября 2018

Эта огромная формула сработала для меня:

=IF(AND(IFERROR(FIND("hr";A1;1);0)>0;IFERROR(FIND("min";A1;1);0)>0;IFERROR(FIND("sec";A1;1);0)>0);TEXT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1;" ";"");"hr";":");"min";":");"sec";"");"hh:mm:ss");IF(AND(IFERROR(FIND("hr";A1;1);0)>0;IFERROR(FIND("min";A1;1);0)>0;IFERROR(FIND("sec";A1;1);0)=0);TEXT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TRIM(A1)&" 00 sec";" ";"");"hr";":");"min";":");"sec";"");"hh:mm:ss");IF(AND(IFERROR(FIND("hr";A1;1);0)=0;IFERROR(FIND("min";A1;1);0)>0;IFERROR(FIND("sec";A1;1);0)>0);TEXT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE("00 hr " & TRIM(A1);" ";"");"hr";":");"min";":");"sec";"");"hh:mm:ss");IF(AND(IFERROR(FIND("hr";A1;1);0)>0;IFERROR(FIND("min";A1;1);0)=0;IFERROR(FIND("sec";A1;1);0)=0);TEXT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TRIM(A1)&"00 min 00 sec";" ";"");"hr";":");"min";":");"sec";"");"hh:mm:ss");IF(AND(IFERROR(FIND("hr";A1;1);0)=0;IFERROR(FIND("min";A1;1);0)>0;IFERROR(FIND("sec";A1;1);0)=0);TEXT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE("00 hr " & TRIM(A1)&" 00 sec";" ";"");"hr";":");"min";":");"sec";"");"hh:mm:ss");IF(AND(IFERROR(FIND("hr";A1;1);0)=0;IFERROR(FIND("min";A1;1);0)=0;IFERROR(FIND("sec";A1;1);0)>0);TEXT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE("00 hr 00 min "&TRIM(A1);" ";"");"hr";":");"min";":");"sec";"");"hh:mm:ss");"Formula needs to be updated"))))))

Как я уже сказал, вам нужно проверить каждую строку в вашем тексте. В зависимости от того, содержит ли оно hr,min,sec, вам нужно рассчитать время и затем преобразовать его во время. Кроме того, вы должны позаботиться о тех раздражающих пробелах в конце некоторых строк. Эта формула делает все это.

enter image description here

Надеюсь, вы сможете адаптировать это к вашим потребностям. Мой Excel на испанском, но я перевел формулы вручную. На всякий случай, если я набрал неправильно, я загрузил пример файла в Gdrive, чтобы вы могли загрузить и проверить формулы (они должны автоматически переводиться, если вы откроете его).

https://drive.google.com/open?id=13J5IWLOFFZpzvIp1oqPwqkE3eHDk7EeH

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