我有一个 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 语句的函数。 感谢您的帮助。
尝试:
={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)}
您需要更改
I:I
以反映最后一列和范围,动物需要有偶数列