我正在尝试在 Excel 中计算(仅使用基于工作表公式的解决方案)两个单元格中以斜线“/”分隔的时间文本中的单个时间持续时间和总时间持续时间(第一个单元格的每个值都是开始时间,第二个单元格中的对应值是结束时间)(仍然仅使用 Excel 2007)
输入单元格(B1 包含起始时间数据,而 B2 包含相应的终止时间数据)
Cell-B1: "00:20 / 00:58 / 09:25 / 12:05 / 17:26 / 21:58"
Cell-B2: "00:45 / 07:57 / 11:41 / 15:57 / 21:27 / 23:48"
预期输出(B6 显示单个时间持续时间,单元格 B7 显示所有持续时间的总和)
Cell-B6: "00:25 / 06:59 / 02:16 / 03:52 / 04:01 / 01:50"
Cell-B7: 19:23:00
数据组织和预期输出结果如下面的快照图所示。
我理解,VBA 可以轻松完成此操作,而且我确实具有基本的 VBA 知识,但是是否有可能基于单个公式(可能是也可能不是数组公式)的解决方案来显示单个时间持续时间和所有计算的时间持续时间的总和?我只是想避免使用 VBA 宏,也不想手动处理文本到列(使用分隔符“/”),然后进行单个时间持续时间计算,最后以连接形式显示所有持续时间,并显示所有单个时间持续时间的总计。
为了得出结果,只能使用一些基本的工作表函数,例如 MID、FIND、SUM、SEARCH、TRIM、SUBSTITUTE、INDEX、ROW 等。
答案1
适应你的公式求和差值
=TEXT(SUM(
VALUE(TRIM(MID(SUBSTITUTE(B2,"/",REPT(" ",LEN(B2))),
(ROW(INDIRECT("1:"&LEN(B2)-LEN(SUBSTITUTE(B2,"/",""))+1))-1)*
LEN(B2)+1,LEN(B2))))-
VALUE(TRIM(MID(SUBSTITUTE(B1,"/",REPT(" ",LEN(B1))),
(ROW(INDIRECT("1:"&LEN(B1)-LEN(SUBSTITUTE(B1,"/",""))+1))-1)*
LEN(B1)+1,LEN(B1))))), "hh:mm:ss")
答案2
公式
抱歉,看到了排除任何使这变得容易的功能的要求;-) 也许将它留给使用当前版本的 Excel 并偶然发现它的人。
=LET(
durations, MAP(TEXTSPLIT(B1," / "),TEXTSPLIT(B2," / "),
LAMBDA(from,to,TIMEVALUE(to)-TIMEVALUE(from))),
VSTACK(
TEXTJOIN(" / ",FALSE,BYCOL(durations,LAMBDA(dur,TEXT(dur,"hh:mm")))),
TEXT(SUM(durations), "hh:mm")))