Google Sheets聚合列统计:按A列值统计'x'符号数量
解决方案:用SQL或数组公式实现表格聚合与统计
SQL 实现
假设你的源表名为yellow_table,A列对应字段category,B-F列对应字段col_b、col_c、col_d、col_e、col_f,单元格值为x或空。
通用兼容方案(UNION ALL)
通过列转行将B-F列的内容转为行记录,再过滤x并按category分组统计:
SELECT category, COUNT(*) AS x_count FROM ( SELECT category, col_b AS value FROM yellow_table UNION ALL SELECT category, col_c AS value FROM yellow_table UNION ALL SELECT category, col_d AS value FROM yellow_table UNION ALL SELECT category, col_e AS value FROM yellow_table UNION ALL SELECT category, col_f AS value FROM yellow_table ) unpivoted WHERE value = 'x' GROUP BY category ORDER BY category;
简洁方案(UNPIVOT语法)
适用于支持UNPIVOT的SQL方言(如SQL Server、BigQuery等):
SELECT category, COUNT(*) AS x_count FROM yellow_table UNPIVOT ( value FOR cols IN (col_b, col_c, col_d, col_e, col_f) ) AS unpivoted_data WHERE value = 'x' GROUP BY category ORDER BY category;
数组公式实现(电子表格工具)
Google Sheets 方案
假设源数据在A1:F区域,直接用QUERY+FLATTEN完成聚合统计:
=QUERY(FLATTEN(A2:A, B2:F), "SELECT Col1, COUNT(Col2) WHERE Col2 = 'x' GROUP BY Col1 LABEL Col1 '分类', COUNT(Col2) 'x数量'")
FLATTEN将A列与B-F列转为两列结构,QUERY负责过滤x并分组统计结果。
Excel 方案
动态数组版本(Excel 365/2021)
用LET整合逻辑,一次性生成结果:
=LET( categories, UNIQUE(A2:A), x_counts, BYROW(categories, LAMBDA(cat, COUNTIF(OFFSET(B2:F, MATCH(cat,A2:A,0)-1,0,COUNTIF(A2:A,cat)), "x"))), HSTACK(categories, x_counts) )
UNIQUE提取A列唯一分类,BYROW遍历每个分类并统计对应区域的x数量,HSTACK合并结果为表格。
传统兼容版本(旧版Excel)
- 提取唯一分类(输入后按
Ctrl+Shift+Enter):
=IFERROR(INDEX(UNIQUE(A$2:A$100), ROW(A1)), "")
- 对应分类统计
x数量(同样按数组公式快捷键):
=IFERROR(SUMPRODUCT((A$2:A$100=D1)*(B$2:F$100="x")), "")
(注:D列为上述唯一分类输出列,可根据实际位置调整)
内容的提问来源于stack exchange,提问作者Fr.
相关产品推荐
相关产品推荐

