Google 表格,IMPORTRANGE:如何按两种类型的动物进行透视、分组和聚合

问题描述 投票:0回答:1

我有一个 IMPORTRANGE(...) 生成下表:

领养日期 带回家的日期 姓名 小狗 小猫 小鸡 ...
2023年1月25日 2023/01/26 科迪 3 0 2 1 30 5 ...
2024/02/24 2024年2月29日 罗布 0 2 0 4 0 0 ...
2024年1月29日 2024年1月29日 罗布 1 0 2 4 2 10 ...
2024年1月29日 2024年1月29日 罗布 2 1 0 1 5 3 ...
... ... ... ... ... ... ... ... ... ...

我想将该函数包装在类似于 QUERY() 和 GROUPBY 或 PIVOT() 或 TRANSPOSE() 和 SUM() 的某种组合中,以产生以下结果:

领养日期 带回家的日期 姓名 动物 #成人 #年轻
2023年1月25日 2023/01/26 科迪 犬类 3 0
2023年1月25日 2023/01/26 科迪 猫科动物 2 1
2023年1月25日 2023/01/26 科迪 30 5
2024/02/24 2024年2月29日 罗布 犬类 0 2
2024/02/24 2024年2月29日 罗布 猫科动物 0 4
2024年1月29日 2024年1月29日 罗布 犬类 3 1
2024年1月29日 2024年1月29日 罗布 猫科动物 2 5
2024年1月29日 2024年1月29日 罗布 7 13
... ... ... ... ... ...

请注意,没有 Rob's Birds 行,因为这些值全部为零。

本质上,我需要采用收养日期、带回家日期、名称和(旋转的)动物物种的所有独特组合,并汇总成年动物和幼崽的总和。 我确信这在一个公式中是可能的,但我无法将分组、聚合和透视作为查询 SQL 语句的函数。 感谢您的帮助。

google-sheets google-sheets-formula
1个回答
0
投票

尝试:

={A1:C1, "Animal", "# Adults", "# Young";
 QUERY(INDEX(LET(b, D2:INDEX(I:I, MAX(ROW(A:A)*(A:A<>""))), a, OFFSET(b,,-3,,3), w, R:S,
 c, TOCOL(FILTER(b, MOD(COLUMN(b)-1, 2)),,1), 
 d, TOCOL(FILTER(b, MOD(COLUMN(b), 2)),,1), 
 e, IFNA(VLOOKUP(TOCOL(FILTER(IF(b="",,OFFSET(b,-1,,1,)), MOD(COLUMN(b)-1, 2)),,1), w, 2, )),
 f, LAMBDA(x, REDUCE(x, SEQUENCE((COLUMNS(b)/2)-1), LAMBDA(a, b, IF(b, {a; x}))))(a), {f, e, c, d})), 
 "where Col5>0 or Col6>0", 1)}

enter image description here

您需要更改

I:I
以反映最后一列和范围,动物需要有偶数列

© www.soinside.com 2019 - 2024. All rights reserved.