根据相关表中的条目有条件地对 googlesheet 列求和

Conditionally Sum a googlesheet column based on entries in related tables

假设我在 google sheet 中有两个相关的 sheets/tabs。一个 sheet/tab 标题为“类别”,另一个标题为“措施”。

类别:

userid catcode
1 a
1 b
2 a
3 c

措施:

userid catcode points
1 a 5
1 b 5
1 c 3
2 a 4
3 c 3

对于每个用户,我希望能够从 Measures table 中为用户在类别 table 中显示 catcode 的点求和。理想情况下使用 auto-extending/filling 公式(如数组公式或查询)。

我知道如何使用 SQL 语句来解决这个问题(加入相关的 table 或在存在的地方执行 select),但我是新手到 googlesheets 并希望能在这里得到一些指导。我对此进行了一些试验,假设第三个 table 名为“Users”,在 A 列中带有用户 ID,我可以添加以下公式:

=sum(filter(measure!C2:C4, measure!A2:A4=users!A2, not(iserror(vlookup(measure!B2:B4, unique(filter(categories!B2:B5, categories!A2:A5=users!A2)), 1, false)))))

然而,这种方法似乎与 arrayformula 不兼容,并且不允许我为新添加的用户 ID 自动填充“用户”选项卡。 Sum 本身显然与 arrayformula 不兼容。此外,如果我将上面的内容包含在 arrayformula 中并将 sum 替换为 sumproduct 或其他求和方法,我将无法让 users!A2 引用像我期望的那样通过 users!A2:A 向下扩展。

任何help/direction将不胜感激。谢谢!

尝试:

=ARRAYFORMULA(QUERY({A1:A, VLOOKUP(A1:A&B1:B, {D1:D&E1:E, F1:F}, 2, 0)}, 
 "select Col1,sum(Col2) where Col1 is not null group by Col1 label sum(Col2)''"))