使用每个单元格的时间范围来计算电子表格中的每日总时间

时间:2020-06-16 10:07:22

标签: google-sheets time

我有一个基本的电子表格,可以跟踪活动花费的时间。

该想法是捕获每个单元格的时间范围。例如。 10:00 - 12:30表示2小时30分钟。

白天可以休息。恢复后,将在新的单元格中输入新的时间范围。

我想计算每天的总时间。例如。 6月15日星期一是2.5 + 4.5 = 7 hours

spreadsheet with time ranges

我正在考虑的算法或多或少

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。通过具有多个“开始”和“结束”列(每个单元格一个值),可以简化此问题。但我想先尝试使用给定的格式,然后再尝试另一种方法。

1 个答案:

答案 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部分。

enter image description here

UPD

添加了忽略* 24格式错误的单元格的功能-在这种情况下仅为0。

最好为IFERROR添加此自定义条件格式设置规则,以错误的格式标记(在屏幕截图中以红色显示)时间段,然后对其进行修复:

B2:F