Google 工作表:如何在整行/列中扩展逗号和“/”分隔时间的总和
Google Sheets: How to expand summing of comma and "/" separated times across full rows / columns
这是一个有点奇怪的请求,但我正在尝试在 google sheet 中开发一个公式来执行以下操作...给定一个示例 sheet(假设任意尺寸):
Summed time #1
Summed time #2
...
08:00,09:00/14:00,15:42
04:33,06:30
...
19:00,21:00
10:11,10:43/20:20,21:22
...
...
...
...
我想获取给定列中所有行的值,获取所有逗号分隔对(使用 / 或单元格分隔对)之间的差异,然后对所有这些差异求和。这个想法是,这些对代表工作开始的时间和工作结束的时间,我想要多天(行)为多个任务(列)工作的时间总和。
到目前为止,我对单个专栏的尝试如下:
=IFERROR(SUM(INDEX(SPLIT(INDEX(SPLIT(TEXTJOIN("/",TRUE,B5:B), "/"), 0,1), ","), 0, 2)
- INDEX(SPLIT(INDEX(SPLIT(TEXTJOIN("/,",TRUE,B5:B), "/"), 0,1), ","), 0,1)
IFERROR(INDEX(SPLIT(INDEX(SPLIT(TEXTJOIN("/",TRUE,B5:B), "/"), 0,2), ","), 0, 2)
- INDEX(SPLIT(INDEX(SPLIT(TEXTJOIN("/",TRUE,B5:B), "/"), 0,2), ","), 0, 1))
......
一遍又一遍地重复,第一次索引调用每次递增一个。显然这是非常低效的,并且不能很好地扩展。
理想情况下,我希望它重复任何 N 个逗号分隔的对,并且我还希望它自动填充整行(可能带有 ArrayFormula()
?)
删除第 4 行的所有内容并在 B4 中尝试:
=ARRAYFORMULA(SUBSTITUTE(TEXT(IFNA(VLOOKUP(COLUMN(B4:4),
QUERY(QUERY(VALUE(SPLIT(FLATTEN(SPLIT(FLATTEN(REGEXREPLACE(TRIM(QUERY(
IF(B5:20="",,"/"&B5:20),,9^9)), "(/)", ""&COLUMN(B5:20)&"×")), "/")), "×,")),
"select Col1,Col3-Col2 where Col2<>0"),
"select Col1,sum(Col2) group by Col1 label sum(Col2)''"), 2, 0)),
"[h]:mm"), "0:00", ))
这是一个有点奇怪的请求,但我正在尝试在 google sheet 中开发一个公式来执行以下操作...给定一个示例 sheet(假设任意尺寸):
Summed time #1 | Summed time #2 | ... |
---|---|---|
08:00,09:00/14:00,15:42 | 04:33,06:30 | ... |
19:00,21:00 | 10:11,10:43/20:20,21:22 | ... |
... | ... | ... |
我想获取给定列中所有行的值,获取所有逗号分隔对(使用 / 或单元格分隔对)之间的差异,然后对所有这些差异求和。这个想法是,这些对代表工作开始的时间和工作结束的时间,我想要多天(行)为多个任务(列)工作的时间总和。
到目前为止,我对单个专栏的尝试如下:
=IFERROR(SUM(INDEX(SPLIT(INDEX(SPLIT(TEXTJOIN("/",TRUE,B5:B), "/"), 0,1), ","), 0, 2)
- INDEX(SPLIT(INDEX(SPLIT(TEXTJOIN("/,",TRUE,B5:B), "/"), 0,1), ","), 0,1)
IFERROR(INDEX(SPLIT(INDEX(SPLIT(TEXTJOIN("/",TRUE,B5:B), "/"), 0,2), ","), 0, 2)
- INDEX(SPLIT(INDEX(SPLIT(TEXTJOIN("/",TRUE,B5:B), "/"), 0,2), ","), 0, 1))
......
一遍又一遍地重复,第一次索引调用每次递增一个。显然这是非常低效的,并且不能很好地扩展。
理想情况下,我希望它重复任何 N 个逗号分隔的对,并且我还希望它自动填充整行(可能带有 ArrayFormula()
?)
删除第 4 行的所有内容并在 B4 中尝试:
=ARRAYFORMULA(SUBSTITUTE(TEXT(IFNA(VLOOKUP(COLUMN(B4:4),
QUERY(QUERY(VALUE(SPLIT(FLATTEN(SPLIT(FLATTEN(REGEXREPLACE(TRIM(QUERY(
IF(B5:20="",,"/"&B5:20),,9^9)), "(/)", ""&COLUMN(B5:20)&"×")), "/")), "×,")),
"select Col1,Col3-Col2 where Col2<>0"),
"select Col1,sum(Col2) group by Col1 label sum(Col2)''"), 2, 0)),
"[h]:mm"), "0:00", ))