【问题标题】:Summing values across multiple spreadsheets based on date根据日期对多个电子表格中的值求和
【发布时间】:2020-03-04 13:28:40
【问题描述】:

我正在尝试对按日期分组的多个 Google 表格电子表格(工作簿)中的值求和。例如,我想将 2020 年 3 月 2 日跨多个电子表格的所有 Delta 值相加,每个电子表格在该日期将有 0 个或多个值。

这是一个包含 2 个电子表格的示例:

电子表格 1:

Date        Start   Stop    Delta
Mon 02Mar20 16:51   16:56   0:05
Mon 02Mar20 16:56   17:00   0:03
Tue 03Mar20 18:45   18:49   0:03
Tue 03Mar20 19:04   19:06   0:01

电子表格 2:

Date        Start   Stop    Delta
Mon 02Mar20 8:38    8:49    0:11
Tue 03Mar20 4:47    4:50    0:03
Tue 03Mar20 17:42   17:55   0:13
Tue 03Mar20 17:58   18:45   0:47
Tue 03Mar20 18:53   19:03   0:10

我希望每天在单独的电子表格中对电子表格中的 Delta 列进行动态总和。所以这就是我想要自动生成的。具体来说,电子表格 1 和电子表格 2 每天(0:08、0:11、0:04、1:10)的 Delta 值之和:

Date        Total   Spreadsheet 1   Spreadsheet 2
Mon 02Mar20 0:19    0:08            0:11
Tue 03Mar20 1:14    0:04            1:10

我尝试使用IMPORTRANGE,但我不确定如何使每天的总和保持动态。我不提前知道电子表格 1 和 2 中的每个日期有多少条目,所以我想有一种方法来自动确定电子表格 1 和 2 每天要总结多少行。我是猜想我需要使用QUERYFILTER 来过滤来自 IMPORTRANGE 的所有导入值,但我不知道该怎么做。

【问题讨论】:

  • 到目前为止你尝试过什么?
  • 更新了我尝试过的问题
  • 分享您的工作表副本(还有您对“工作簿”的定义是什么?)
  • 我更新了我的问题以使用“电子表格”而不是“工作簿”

标签: google-sheets sum


【解决方案1】:

我做了一个简单的数据集来总结。有一个这样的电子表格:

如您所见,2nd march 的总和值为 2,3rd March 的总和值为 20。

在另一个电子表格中,得到我的仪表板:

我在 B2 中使用的公式是:

=SUMPRODUCT(--(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1rnap9LJQJaqriiJLSsF7EWQLwBUiNviktxDAMFfW0ZE";"Hoja 1!A1:A4")=$A2);IMPORTRANGE("https://docs.google.com/spreadsheets/d/1rnap9LJQJaqriiJLSsF7EWQLwBUiNviktxDAMFfW0ZE";"Hoja 1!B1:B4"))

这就是它的工作原理:

  1. --(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1rnap9LJQJaqriiJLSsF7EWQLwBUiNviktxDAMFfW0ZE";"Hoja 1!A1:A4")=$A2) 会将工作簿 1 中 A 列的值与我​​的主仪表板中 A 列中的日期进行比较。因为我们使用了double unary operator,所以如果匹配或不匹配,它将返回一个由 1 和 0 组成的数组(在这种情况下,它将是一个类似{1;1;0;0} 的数组
  2. IMPORTRANGE("https://docs.google.com/spreadsheets/d/1rnap9LJQJaqriiJLSsF7EWQLwBUiNviktxDAMFfW0ZE";"Hoja 1!B1:B4") 将返回工作簿 1 中列 B 的值作为数组,在这种情况下,它将返回 {1;1;10;10}
  3. SUMPRODUCT 会将两个数组相乘并对值求和,在本例中为 {1;1;0;0} * {1;1;10;10} = {1;1;0;0},最终数组的和为 2。

同样的逻辑应用到第二个日期,我们会得到{0;0;1;1} * {1;1;10;10} = {0;0;10;10} -> 20

只需使用相同的公式将每个工作簿添加到 1 个不同的列中,然后在您的主仪表板中进行常规汇总,以获得特定日期所有工作簿中所有值的总和:

希望这会有所帮助。

注意:当然,只有当您的日期是日期(不是字符串/文本)并且 Delta 中的时间也是日期/时间(不是字符串/文本)时,此方法才有效

【讨论】:

  • 我尝试了您的解决方案,但是当我尝试将IMPORTRANGE=$A2 一起使用时,我只返回一个值而不是数组。这就是我所拥有的:=IMPORTRANGE("https://docs.google.com/spreadsheets/d/1i2k1BISjtgeCO6j0R88f5YK0qtyd5wDnG5JnzIirTi-I","Timesheet!a2:a200")=A25,但我没有获得与 A25(主电子表格中的日期)匹配的值数组,而是返回一个值 TRUEFALSE。而且我有多少匹配的行并不重要 - 它总是返回单个值 TRUEFALSE
  • 当我添加双一元运算符时,它只是将TRUE 更改为1 或将FALSE 更改为0,但即使有多行,我仍然只有一个值在与主电子表格中的日期匹配的另一个电子表格中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多