根据相关表中的条目有条件地对 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)''"))
假设我在 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)''"))