如何用数据透视表汇总多列运动项目并生成对应学生名单
解决方案:自动汇总运动项目对应的学生名单
方法1:用Power Query一键整理数据(推荐)
不用手动复制粘贴,几步就能把三列项目转成适合透视的格式:
- 选中你的数据区域(包含姓名列和3个运动项目列)
- 点击「数据」选项卡 → 「从表格/范围」(Excel 2016及以后版本;旧版找「Power Query」选项卡)
- 在Power Query编辑器里:
- 选中姓名列,右键选择「逆透视其他列」,瞬间就会把3列项目合并成一列,每个学生对应3条记录(姓名+单个项目)
- 点击「关闭并上载」,把整理好的数据导出到新工作表
接着做数据透视表:
- 选中新生成的两列数据,插入数据透视表
- 把「运动项目」拖到「行」区域,「姓名」拖到「值」区域
- 点击值区域的「姓名」字段 → 「值字段设置」→ 选「连接项」,分隔符用逗号或其他符号,确认后每个项目对应的学生名单就自动合并好了
方法2:用公式实现(无Power Query时可用)
如果你的Excel版本不支持Power Query,试试这套公式:
第一步:提取所有唯一运动项目
在空白列(比如E列)输入:
=UNIQUE(TOCOL(B:D,1))
(Excel 365/2021直接用;旧版需用「数据→高级筛选」提取唯一值)
这个公式会自动抓取B、C、D三列里所有不重复的项目。
第二步:生成每个项目的学生名单
在F2单元格输入:
=TEXTJOIN(", ", TRUE, IF((B$2:B$100=E2)+(C$2:C$100=E2)+(D$2:D$100=E2), A$2:A$100, ""))
- Excel 365/2021直接回车,旧版按
Ctrl+Shift+Enter(数组公式),然后下拉填充到所有项目行 - 原理:检查每个学生的三个项目是否匹配当前项目,匹配就提取姓名,最后用逗号拼接成名单
提示
- 把公式里的单元格范围(比如A$2:A$100)替换成你实际的数据范围
- 若用旧版Excel,TEXTJOIN不可用的话,可自定义VBA函数实现姓名拼接
内容的提问来源于stack exchange,提问作者Craig Lewis
相关产品推荐
相关产品推荐

