在单独的电子表格中,我在第2列(B2:B)中有项目名称。在同一电子表格的第10列(J2:J)中,我有时间(持续时间)花在该项目上。重复这些项目并花费额外的时间,以便它们在列表中多次显示。像这样:
Project Name Time Spent
12-001 John 2:13:45
12-002 Sally 0:34:45
12-003 Tim 1:56:12
13-006 Bruce 3:34:12
12-001 John 3:45:09
12-003 Tim 0:38:56
12-001 John 1:00:00
在公式所在的父电子表格中,我有一个位于第2列(B2:B)的所有项目的主列表。我想对其他电子表格中的数据求和并进行过滤,并将其与正确的项目名称进行匹配。所以像这样:
Project Name Time Spent
12-001 John 6:58:54
12-002 Sally 0:34:45
12-003 Tim 2:35:08
13-006 Bruce 3:34:12
我一直在努力:
=sum(filter(importrange("key","Timesheet!A2:J254"),importrange("key","Timesheet!B2")=B2,))
=sum(query(importrange("key","Timesheet!A2:J254"),"Select Col10 where Col2 ="&B2&")
哪些不起作用。
我确实有一个解决方法,只需对同一个公式中的三个importrange函数进行求和和过滤,但这意味着我必须运行几千次的importrange?效率不高:
=iferror(sum(filter(IMPORTRANGE("key","Timesheet!J2:J"),IMPORTRANGE("key","Timesheet!B2:B")=B2)),"")
答案 0 :(得分:1)
=ArrayFormula(IFERROR(VLOOKUP(B2:B,QUERY(QUERY(ImportRange("key","Timesheet!A2:J254"),"select Col2, hour(Col10)/24+minute(Col10)/1440+second(Col10)/86400"),"select Col1, sum(Col2) group by Col1"),2,0)))
QUERY是使用ImportRange时的理想选择,因为它允许通过一次ImportRange调用进行大量数据操作/聚合。
QUERY无法原生地汇总时间值,因此使用hour(Col10)/24+minute(Col10)/1440+second(Col10)/86400
进行了复杂的数值转换。如果您的持续时间超过一天,则还需要包括日期(Col10)。
嵌套的QUERY函数然后提供一个查找表,VLOOKUP用它来执行"数组查找"项目名称的主列表。同样,这可以使用一个ImportRange调用,而不必填写公式。
答案 1 :(得分:0)
可能不适合OP,但传统解决方案可能是一个支点表:
Project Name
行,汇总方式:SUM Time Spent
值。