如何在Excel中制作矩阵式Pivot Table:列名作为行统计值计数
解决Excel合并两列统计的透视表问题
要实现把test1、test2作为行,各字母作为列的频次统计矩阵,核心是先把宽表转成窄表,再做透视表,具体分两种方法:
方法1:用Power Query逆透视(推荐,Excel 2016及以后版本)
- 选中包含id、test1、test2的完整数据区域,点击「数据」选项卡 → 「从表格/区域」,确认弹窗里的「我的表格有标题」已勾选,进入Power Query编辑器。
- 在编辑器中选中
id列,点击「转换」选项卡 → 「逆透视列」→ 「逆透视其他列」。此时会生成两列:属性(对应原表的test1、test2)和值(对应各单元格的字母)。 - 点击「关闭并上载」,将处理好的窄表导出到新工作表。
- 选中新生成的窄表,插入数据透视表:
- 把
属性拖到「行」区域,作为矩阵的行标题 - 把
值拖到「列」区域,作为矩阵的列标题(自动生成a、b、c等字母) - 把
值再次拖到「值」区域,右键点击该字段 → 「值字段设置」,选择「计数」
- 把
- 透视表默认会显示总计,若未显示,可在「设计」选项卡中开启「总计」→ 「对行和列启用」
方法2:手动构造窄表(适合无Power Query的旧版本)
- 在原数据右侧新增两列,表头分别设为
属性和值。 - 假设原数据从第1行表头开始,共N行数据(含表头):
- 在
属性列第2行输入=IF(ROW()-1<=N-1,"test1","test2"),下拉至第2N行(覆盖原数据的两倍行数) - 在
值列第2行输入=IF(ROW()-1<=N-1,B2,OFFSET(B2,-(N-1),1)),下拉至第2N行(前N行取test1的值,后N行取test2的值)
- 在
- 选中新增的
属性和值列数据,插入数据透视表,设置规则同方法1:行放属性,列放值,值区域用「计数」统计频次
注意事项
- 如果原数据存在空值,透视表的计数会自动忽略;若需要统计空值,可先把空值替换为特定标识(比如"空")再处理。
内容的提问来源于stack exchange,提问作者Albert Telecaster
相关产品推荐
相关产品推荐

