0

在单独的电子表格中,我在第 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)),"")
4

2 回答 2

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)))


  1. QUERY是使用 ImportRange 时的理想选择,因为它允许通过一次 ImportRange 调用进行大量数据操作/聚合。

  2. QUERY 不能在本地聚合时间值,因此使用hour(Col10)/24+minute(Col10)/1440+second(Col10)/86400. 如果您的持续时间大于一天,则还需要包括 day(Col10)。

  3. 然后嵌套的 QUERY 函数提供一个查找表,VLOOKUP 使用它来执行项目名称主列表的“数组查找”。同样,这允许使用一个 ImportRange 调用,而不必填写公式。

于 2015-03-11T22:19:50.920 回答
0

可能不适合 OP,但传统的解决方案可能是一个数据透视表:

SO28970025 示例

Project Name对于,按以下方式汇总:的总和Time Spent

于 2015-03-10T17:22:46.160 回答