Формула Excel для расчета продолжительности времени на основе строки текста, например 9: 00am-12: 30pm

Я пытаюсь разработать формулу Excel, которая вычисляла бы фактическую продолжительность времени для строки временного диапазона следующего формата:1:00am – 3:00am

По данным в этой статье кажется, это должно быть так просто, как вычитание два раза. Например, чтобы получить часы, минуты и секунды между двумя временами (4: 55: 00), в статье говорится следующее:

=TEXT(B2-A2,"h:mm:ss")

вот о том, как далеко я получил:

=TEXT(RIGHT(B2,SEARCH(" – ",B2))-LEFT(B2,SEARCH(" – ",B2)),"h:mm:ss")

интересно, если проблема может заключаться в том, что моя строка текста не имеет компонента "date" в дополнение к времени. Является ли единственным решением, позволяющим выполнять операцию вычитания, чтобы" выдумать " дату в строки? Или есть другой альтернативный подход, кроме простого разбиения часовых и минутных компонентов по отдельности и вычисления продолжительности таким образом? Я также хотел бы компенсировать любые потенциальные промежутки времени pm-to-am, такие как 9:00pm - 12:00am, если это вообще возможно.

6
задан purefusion
30.04.2023 21:05 Количество просмотров материала 3264
Распечатать страницу

5 ответов

вот одно из сложных решений. Вероятно, лучше всего просто вставить это и надеяться на лучшее, а не пытаться сесть и проанализировать это.

=INT(MOD(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)+(MID(B2,FIND(":",B2,FIND("-",B2))+1,2) - MID(B2,FIND(":",B2)+1,2))/60+IF(MID(B2,FIND("m",B2)-1,1)=MID(B2,FIND("m",B2,FIND("-",B2))-1,1),IF(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)+(MID(B2,FIND(":",B2,FIND("-",B2))+1,2) - MID(B2,FIND(":",B2)+1,2))/60<0,24-IF(LEFT(B2,2)="12",12,0),0),12-IF(AND(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)<>0,MID(B2,FIND(":",B2,FIND("-",B2))-2,2)="12"),12,0)),24)) & ":" & TEXT((MOD(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)+(MID(B2,FIND(":",B2,FIND("-",B2))+1,2) - MID(B2,FIND(":",B2)+1,2))/60+IF(MID(B2,FIND("m",B2)-1,1)=MID(B2,FIND("m",B2,FIND("-",B2))-1,1),IF(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)+(MID(B2,FIND(":",B2,FIND("-",B2))+1,2) - MID(B2,FIND(":",B2)+1,2))/60<0,24-IF(LEFT(B2,2)="12",12,0),0),12-IF(AND(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)<>0,MID(B2,FIND(":",B2,FIND("-",B2))-2,2)="12"),12,0)),24)-INT(MOD(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)+(MID(B2,FIND(":",B2,FIND("-",B2))+1,2) - MID(B2,FIND(":",B2)+1,2))/60+IF(MID(B2,FIND("m",B2)-1,1)=MID(B2,FIND("m",B2,FIND("-",B2))-1,1),IF(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)+(MID(B2,FIND(":",B2,FIND("-",B2))+1,2) - MID(B2,FIND(":",B2)+1,2))/60<0,24-IF(LEFT(B2,2)="12",12,0),0),12-IF(AND(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)<>0,MID(B2,FIND(":",B2,FIND("-",B2))-2,2)="12"),12,0)),24)))*60,"00")

изменить: Исправлена формула в последний раз.

обращаясь комментарий:

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

=TEXT(SUM(VALUE(B2:B3)),"h:mm:ss")

вы должны ввести как формулу массива. Сделайте это, нажав Ctrl + Shift + Enter при вводе формула.

5
отвечен Excellll 2023-05-02 04:53

Если вы можете поставить пробел перед "am" или "PM", то это будет работать:

=TEXT(RIGHT(B2,LEN(B2)-SEARCH(" - ",B2)-2) -
 LEFT(B2,SEARCH(" - ",B2)-1),"h:mm:ss")

вот основной, который не будет обрабатывать никакого пространства перед am / pm, но он не является надежным или полным, так как он не будет обрабатывать много крайних случаев, просто хотел, чтобы показать несколько разных способов делать вещи. Нам нужно знать все возможные типы строк, которые вы будете анализировать, чтобы придумать действительно полное решение:

=TEXT((MID(B2,SEARCH(" - ",B2)+3, LEN(B2)-SEARCH(" - ",B2)-4) &  
       IF(ISERROR(SEARCH("am",RIGHT(B2,8))), " pm", " am")) - 
      (LEFT(B2,SEARCH(" - ", B2)-3) & 
       IF(ISERROR(SEARCH("am",LEFT(B2,8)))," pm"," am")),
      "h:mm:ss")
2
отвечен Lance Roberts 2023-05-02 07:10

вам нужно пространство перед " am "или" pm", как сказал Лэнс Робертс.

Вы можете использовать эту формулу:

=SUBSTITUTE(SUBSTITUTE(B2; "am"; " am"); "pm"; " pm")

затем попробуйте этот:

=TEXT(TIMEVALUE(RIGHT(B2;SEARCH(" - ";B2;1)))-TIMEVALUE(LEFT(B2;SEARCH(" - ";B2;1)));"h:mm:ss")
1
отвечен diogum 2023-05-02 09:27

попробуйте эту формулу:

=A2+(A1>A2)-A1

здесь

A1 содержит ваше " От " время

A2 содержит ваше " To " time

затем вы можете использовать функцию TEXT, чтобы отформатировать его в строку,

или используйте числовой формат [h]:mm:ss.

Он должен работать даже с промежутками времени, которые варьируются за полночь (т. е. с 9:34 вечера до 3:45 утра)


во-первых, как Лэнс сказал, Вы необходимо добавить пробел между временем и обозначениями AM/PM в строке времени.

самый простой способ сделать это через Excel найти и заменить характеристика. Нажмите Ctrl + H, введите " am " в найти и затем введите " am " (с одним пробелом перед ним) в заменить на. Сделайте то же самое с "ПМ."

Edit: [удалены вложенные замены] вложенность SUBSTITUTES было бы плохой идеей в конце концов. По крайней мере, не без добавления обрезки.


вот еще один мой подход.

создайте имя ("tt"), используя формулу ниже (где $A1:$A10-это диапазон, содержащий строки времени.

=TRIM(SUBSTITUTE(SUBSTITUTE($A1:$A10,"a"," a"),"p"," p"))

затем использовать эту формулу, чтобы получить продолжительность времени (на основе первой формулы выше):

=RIGHT(tt,LEN(tt)-FIND("-",tt,1)-1)+
  (LEFT(tt,FIND("-",tt,1)-2)>RIGHT(tt,LEN(tt)-FIND("-",tt,1)-1))-
  LEFT(tt,FIND("-",tt,1)-2)
1
отвечен Ellesa 2023-05-02 11:44

большая проблема заключается в том, что время требует пространства между минутами и am / pm:1:00 am - 3:00 am или 9:00 pm - 12:00 am.

С этим, вы можете использовать формулу:

=TIMEVALUE(RIGHT(A1,SEARCH(" - ",A1)))-TIMEVALUE(LEFT(A1,SEARCH(" - ",A1)))+
IF(TIMEVALUE(RIGHT(A1,SEARCH(" - ",A1)))-TIMEVALUE(LEFT(A1,SEARCH(" - ",A1)))<0,1,0)

и отформатируйте ячейку как пользовательское форматирование h:mm:ss.

0
отвечен Hand-E-Food 2023-05-02 14:01

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх