Excel 用户表单的复杂公式

Excel complicated formula for a user form

我的一些同事参加了各个城市的大会、会议和研讨会。 虚构行程示例如下所示

行程包括中途停留,每个地点都标有行程编号。 (答:15 至 A:22) 我正在处理一个用户表单,它会给我每个行程编号从出发到到达时间所花费的时间(以小时和分钟为单位)。请注意,有些行程包括中途停留,这就是为什么 1 号有三个行程编号条目(经巴黎前往法兰克福) 我知道所有这些旅行花费的总时间是 185 小时 45 分钟,如 L:23 中所述。 在红色部分,沿着 raw 23 有如下五个公式:

C:23 显示 24/06/2016 即 =C17

D:23 显示 19:15 即 =D17

H:23 显示 16/01/2016,即 =LOOKUP(2,1/(H17:H22<>""),H17:H22) 它选取了插入在 H17:H22

之间的最后日期

J:23 显示 13:00 即 =LOOKUP(2,1/(J17:J22<>""),J17:J22) 它选取最后一次插入 J17:J22

之间的值

L:23 显示 185:45 小时和分钟。它是第一次旅行的出发日期和时间与最后一次旅行的到达日期和时间之间的差异。 (总时间以小时和分钟为单位)=MAX(0,(H23+J23)-(C23+D23))

我需要一种方法来计算 185:45 在 C:26 到 C:29 中的各种商务旅行号码之间细分的总时间。请注意,行程将始终以逻辑顺序显示,即 1、2、3,但每次行程的航段数量将根据中途停留而有所不同。最小行程数为 1,最大行程数为 4。

提前致谢 安倍

试试这个:

=TEXT(MAX(IF($A:$A=A26,$I:$I+$J:$J))-MIN(IF($A:$A=A26,$C:$C+$D:$D)),"[hh]:mm")

为数组公式,必须用Ctrl-Shift-Enter确认。输入C26,打Ctrl-Shift-Enter然后复制下来。

编辑:根据 OP 的评论,需要的是从一段开始到下一段开始的总时间。所以公式改为:

=IF(MIN(IF($A:$A=A26+1,$C:$C+$D:$D))=0,MAX(IF($A:$A=A26,$I:$I+$J:$J)),MIN(IF($A:$A=A26+1,$C:$C+$D:$D)))-MIN(IF($A:$A=A26,$C:$C+$D:$D))

这仍然是一个数组公式。它需要通过点击 Ctrl-Shift-Enter 来确认。然后复制下来。