基于关键字列合并两个Excel工作表并拼接数据的无宏实现方案
基于关键字列合并SQL源Excel表的无宏刷新方案
核心思路
用Excel内置的**Power Query(获取和转换)**实现,直接对接SQL数据源完成合并,全程无需宏,支持一键刷新获取最新数据。
步骤1:导入SQL数据到Power Query
- 打开Excel,切换到「数据」选项卡 → 点击「获取数据」→ 选择对应SQL数据库类型(如SQL Server/MySQL)
- 输入服务器地址、数据库名称,选择要导入的第一张表,点击「加载到」→ 选择「仅创建连接」并勾选「添加到数据模型」,重复此操作导入第二张表
- 进入Power Query编辑器:点击「数据」→ 「现有连接」→ 选中任意一个SQL连接 → 点击「编辑」
步骤2:合并两个数据源
- 在Power Query编辑器中,选中第一张表的查询,点击「主页」→ 「合并查询」→ 「合并查询作为新查询」
- 在合并配置框中:
- 上方选择第一张表,选中「Key Col」列
- 下方选择第二张表,同样选中「Key Col」列
- 连接类型选择完全外部(保留两边所有Key值,适配单边有数据的场景)
- 点击「确定」生成新的合并查询
步骤3:整合非空数据
- 点击合并列右侧的展开箭头,勾选需要整合的目标列(如示例中工作表2的Column C),取消「使用原始列名作为前缀」
- 对于需要取非空值的列(比如优先保留工作表1数据,无数据则用工作表2的),添加自定义列:
点击「添加列」→ 「自定义列」,输入Power Query公式:= Coalesce([工作表1_Column B], [工作表2_Column C])Coalesce函数会自动返回第一个非空值,适配多列非空整合需求,Excel 365/2021及以上支持;旧版可改用if判断:if [工作表1_Column B] <> null then [工作表1_Column B] else [工作表2_Column C] - 删除不需要的原始列,整理最终列顺序
步骤4:加载数据并设置刷新
- 点击「主页」→ 「关闭并上载」,将合并后的数据加载到新工作表
- 刷新数据:切换到「数据」选项卡,点击「全部刷新」,Power Query会自动从SQL拉取最新数据并重新执行合并逻辑
注意事项
- 旧版Excel(2016及以前)中Power Query名为「获取和转换」,操作逻辑一致
- 确保SQL数据库连接权限正常,刷新时需保持网络连通
- 可根据实际需求调整合并连接类型:仅保留两边共有的Key选「内部」,保留第一张表所有Key选「左外部」
内容的提问来源于stack exchange,提问作者Akav
相关产品推荐
相关产品推荐

