如何在Word邮件合并中关联两个Excel工作表(无需合并数据)
解决Word邮件合并关联两个独立Excel工作表的问题
不用复制粘贴合并数据的话,有几个实用的方案,都是基于动态数据连接的,原表更新后数据源也能同步,很方便:
方法一:用Excel Power Query创建动态合并数据源
这个方法会生成一个和原表实时关联的合并数据表,不用手动复制粘贴:
- 打开一个空白Excel工作簿,作为中间数据源载体
- 切换到「数据」选项卡,点击「获取数据」>「从文件」>「从工作簿」,选择你的
Attendance.xlsx,导入对应的工作表(比如Attendance$) - 重复上一步,导入
Marks.xlsx里的目标工作表 - 进入Power Query编辑器后,找到两个导入的表,点击「合并查询」>「合并查询作为新查询」
- 在合并对话框里:
- 选择第一个表的唯一关联字段(比如学生ID、姓名,必须是两个表都有的且唯一的字段)
- 选择第二个表对应的关联字段
- 选择连接类型(推荐「内部连接」,只保留两个表都匹配的记录;如果要保留所有记录可选「左外部连接」)
- 合并完成后,展开第二个表的字段(点击表列右侧的展开按钮,勾选你需要的字段)
- 整理好字段后,点击「关闭并加载」,合并后的数据会加载到新工作表里(这个表是动态的,原Excel表更新后,右键点击这个表选择「刷新」就能同步)
- 最后在Word邮件合并里,选择这个新工作簿作为数据源即可
方法二:直接在Word邮件合并中用SQL查询关联两个表
这个方法不用额外创建Excel文件,直接在Word里通过SQL语句拉取关联数据:
- 打开你的Word邮件合并模板,进入邮件合并向导到「选择收件人」步骤,点击「使用现有列表」>「浏览」
- 随便选择其中一个Excel文件(比如
Attendance.xlsx),弹出「选择表格」对话框时,不要选具体工作表,点击「查询选项」 - 切换到「SQL」选项卡,输入关联两个表的SQL语句,示例如下(替换成你的实际文件路径、表名和关联字段):
SELECT a.*, m.* FROM [Attendance$] a INNER JOIN [C:\你的文件路径\Marks.xlsx].[Marks$] m ON a.StudentID = m.StudentID
- 注意:如果文件路径包含空格,要把整个路径用方括号括起来,比如
[C:\My Documents\Marks.xlsx] [Attendance$]和[Marks$]是Excel工作表的默认命名格式,如果你改了工作表名,要对应修改- 点击「确定」,Word就会直接获取两个表关联后的数据集,接下来正常完成邮件合并即可
方法三:用Excel Power Pivot建立数据模型作为数据源
如果你的数据比较复杂,需要多表关联,这个方法更灵活:
- 打开空白Excel工作簿,导入
Attendance.xlsx和Marks.xlsx的工作表到Power Pivot(点击「数据」>「添加到数据模型」,分别导入两个表) - 在Power Pivot编辑器中,找到两个表的关联字段(比如StudentID),拖拽其中一个表的字段到另一个表的对应字段上,建立关系
- 返回Excel界面,点击「插入」>「数据透视表」,选择「使用此工作簿的数据模型」作为数据源
- 在数据透视表字段列表中,从两个表中勾选你需要的所有字段,生成包含完整数据的透视表
- 将这个透视表作为Word邮件合并的数据源,原表更新后,刷新透视表就能同步数据
注意事项
- 两个Excel表必须有唯一且匹配的关联字段(比如学号、身份证号),否则无法正确关联数据
- 用SQL方法时,不要移动Excel文件的位置,否则需要修改SQL语句里的文件路径
- 所有方法生成的数据源都是动态的,原表数据更新后,刷新对应的查询/透视表就能同步到邮件合并中
内容的提问来源于stack exchange,提问作者Sanjeev
相关产品推荐
相关产品推荐

