如何以最简方式实现多列值聚合?按分类统计动物频次
简化的多列动物分类统计方法
原数据表格
| 分类(classification) | 动物1(animal1) | 动物2(animal2) | 动物3(animal3) |
|---|---|---|---|
| mammal | dog | cat | |
| bird | parrot | owl | |
| mammal | cat | zebra | lion |
| fish | goldfish | tuna | |
| bird | ostrich | parrot | chicken |
目标汇总表
| 分类(classification) | animal | count |
|---|---|---|
| mammal | dog | 1 |
| mammal | cat | 2 |
| mammal | zebra | 1 |
| mammal | lion | 1 |
| bird | parrot | 2 |
| bird | owl | 1 |
| bird | ostrich | 1 |
| bird | chicken | 1 |
| fish | goldfish | 1 |
| fish | tuna | 1 |
一步到位的简化公式
方法1:合并多列后分组统计(直观易读)
=QUERY( ARRAYFORMULA({A2:A,B2:B;A2:A,C2:C;A2:A,D2:D}), "SELECT Col1, Col2, COUNT(Col2) WHERE Col2 <> '' GROUP BY Col1, Col2 LABEL Col1 '分类(classification)', Col2 'animal', COUNT(Col2) 'count'", 0 )
- 逻辑:把三列动物分别和对应行的分类列组合成3组二维数组,合并后用
QUERY过滤空值、按分类+动物分组统计数量,直接输出带表头的结果。
方法2:用FLATTEN拼接后拆分统计(适配更多动物列场景)
=QUERY( FLATTEN(IF(B2:D<>"",A2:A&"|"&B2:D,"")), "SELECT SPLIT(Col1,'|')[0],SPLIT(Col1,'|')[1],COUNT(Col1) WHERE Col1<>'' GROUP BY SPLIT(Col1,'|')[0],SPLIT(Col1,'|')[1] LABEL SPLIT(Col1,'|')[0] '分类(classification)',SPLIT(Col1,'|')[1] 'animal',COUNT(Col1) 'count'", 0 )
- 逻辑:遍历所有动物单元格,非空则拼接「分类|动物」字符串,用
FLATTEN转成一维列表后,QUERY拆分字符串、过滤空值、分组统计。
两种方法都无需新增辅助列,直接在空白单元格输入公式即可生成目标汇总表。
内容的提问来源于stack exchange,提问作者whatdahil
相关产品推荐
相关产品推荐

