如何基于单列标识无数据丢失合并Excel行 按邮箱合并参会记录
方案1:Power Query(Excel原生内置,推荐使用)
Excel 2016及之后版本自带该功能,2013及更早版本可安装微软官方免费Power Query插件使用,操作无复杂代码,步骤如下:
- 选中原始数据任意单元格,按
Ctrl+T将数据转换为超级表,确认「我的表有标题」勾选后点击确定。 - 点击顶部菜单栏「数据」选项卡 → 选择「自表格/区域」,进入Power Query编辑器界面。
- 选中不需要的
Event列,右键点击「删除」。 - 按住
Ctrl同时选中Name和Email两列,右键点击「分组依据」,在弹出的配置框中:新列名可填写临时表,操作下拉选择「所有行」,点击确定。 - 点击顶部「添加列」选项卡 → 选择「自定义列」,依次添加三个参会列:
- 新列名填
Attend 1,自定义公式输入Table.Max([临时表], "Attend 1")[Attend 1],点击确定 - 新列名填
Attend 2,自定义公式输入Table.Max([临时表], "Attend 2")[Attend 2],点击确定 - 新列名填
Attend 3,自定义公式输入Table.Max([临时表], "Attend 3")[Attend 3],点击确定
- 新列名填
- 选中之前生成的
临时表列,右键点击「删除」。 - 点击顶部「主页」选项卡 → 选择「关闭并上载」,处理完成的表格会自动导出到Excel新工作表,后续原始数据更新后,右键点击结果表选择「刷新」即可自动同步结果。
方案2:Excel公式(适用于Excel 365/2021及以上版本)
无需跳转其他界面,直接用函数计算即可:
- 首先提取不重复的姓名+邮箱列表:任选空白单元格作为结果区起始位置(例如F2),输入公式
=UNIQUE(B2:C9),按回车后会自动溢出所有唯一的姓名、邮箱组合(B2:C9为原始数据的Name、Email列范围,可根据实际数据量调整)。 - 提取Attend 1列数据:在Attend 1列首个结果单元格(例如H2)输入公式
=XLOOKUP(TRUE,($C$2:$C$9=G2)*($D$2:$D$9<>""),$D$2:$D$9,""),按回车后下拉填充所有行(G2为当前行的邮箱单元格,$C$2:$C$9为原始数据邮箱列,$D$2:$D$9为原始数据Attend 1列,可根据实际范围调整)。 - 提取Attend 2列数据:在Attend 2列首个结果单元格(例如I2)输入公式
=XLOOKUP(TRUE,($C$2:$C$9=G2)*($E$2:$E$9<>""),$E$2:$E$9,""),按回车后下拉填充所有行。 - 提取Attend 3列数据:在Attend 3列首个结果单元格(例如J2)输入公式
=XLOOKUP(TRUE,($C$2:$C$9=G2)*($F$2:$F$9<>""),$F$2:$F$9,""),按回车后下拉填充所有行。
内容的提问来源于stack exchange,提问作者Shawn Janzen
相关产品推荐
相关产品推荐

