我有一个基本的电子表格,可以跟踪活动花费的时间。
该想法是捕获每个单元格的时间范围。例如。 10:00 - 12:30
表示2小时30分钟。
白天可以休息。恢复后,将在新的单元格中输入新的时间范围。
我想计算每天的总时间。例如。 6月15日星期一是2.5 + 4.5 = 7 hours
。
我正在考虑的算法或多或少
for each cell that contains time ranges for the given day
start, end = split(cell, " - ")
diff_decimal = (end - start) * 24
total += diff_decimal
但是我不确定如何使用电子表格功能执行此操作。
我的起点是使用=SPLIT(B2," - ")
,但是由于不确定如何处理返回值,因此已经被封锁了。
P.S。通过具有多个“开始”和“结束”列(每个单元格一个值),可以简化此问题。但我想先尝试使用给定的格式,然后再尝试另一种方法。
答案 0 :(得分:3)
这是Google表格解决方案,因为Excel没有正则表达式公式。
尝试以下公式(将其放在G1
的{{1}}列中,其编号为数字):
G:G
如果将={
"Total";
ARRAYFORMULA(
IF(
A2:A = "",
"",
MMULT(
IFERROR(
( TIMEVALUE(REGEXEXTRACT(B2:F, "-\s+(\S+)"))
- TIMEVALUE(REGEXEXTRACT(B2:F, "(\S+)\s+-"))) * 24,
0
),
SEQUENCE(COLUMNS(B2:F), 1, 1, 0)
)
)
)
}
格式设置为“持续时间”,则可以删除G:G
部分。
UPD
添加了忽略* 24
格式错误的单元格的功能-在这种情况下仅为0。
最好为IFERROR
添加此自定义条件格式设置规则,以错误的格式标记(在屏幕截图中以红色显示)时间段,然后对其进行修复:
B2:F