夜雨聆风学习资料网

ARTICLE · 1189655

Excel Power Query 追加查询:多表纵向合并,告别复制粘贴

Excel Power Query 追加查询:多表纵向合并,告别复制粘贴

在日常工作中,你是否也遇到过这样的场景:1 月的销售表、2 月的销售表、3 月的销售表……十几张表散落在不同工作簿里,每到月末就得一张张打开、Ctrl+C、Ctrl+V,费时费力还容易出错。

更让人头疼的是,有时候各部门交上来的表格,列的顺序还不一样,有的多了“备注”列,有的少了“渠道”列,手动合并时稍不留神就串行。

今天给大家介绍一个“一劳永逸”的解决方案——Power Query 的追加查询功能。设置一次,以后每个月只需点击“刷新”,所有数据自动汇总,彻底告别重复劳动。

一、先搞清楚:追加 vs 合并,别搞混了

Power Query 里有两个容易混淆的功能:追加查询和合并查询。它们的区别用一句话概括就够了:

  • 追加查询是纵向堆叠——把多张表的行摞在一起,像叠积木一样往上加。

  • 合并查询是横向拼接——根据某个共同字段,把另一张表的列拉过来,类似 VLOOKUP。

记住一个口诀:追加加行,合并加列。

本文重点讲追加查询,适合以下场景:各表结构基本一致,目标是把分散的数据汇总成一张总表,比如各月销售数据合成年度汇总、各地区上报数据合并成全国总表等。

二、追加查询的核心机制:按列名匹配

很多人担心:“万一各表的列顺序不一样怎么办?” 放心,Power Query 追加查询只认列标题名称,不认列的物理位置。

举个例子:表 A 的列是“姓名 | 数量 | 金额”,表 B 的列是“金额 | 姓名 | 数量”,只要列标题名一致,Power Query 就能正确对齐,不会串列。

但如果某张表多了一个其他表没有的列(比如表 C 有“备注”列),追加后的结果中,其他表对应的“备注”位置会显示为 null(空值) 。这不是错误,而是追加查询的正常逻辑——所有表的列标题取并集,缺失的部分用 null 填充。

了解了这个机制,接下来看具体操作。

三、操作步骤:三步完成多表追加

场景准备

假设你有一个工作簿,里面有“1月”“2月”“3月”三张工作表,结构相同。我们需要将它们追加为一张总表。

Step 1:将各表导入 Power Query

在 Excel 中依次点击 数据 → 获取数据 → 来自文件 → 从工作簿,选择当前工作簿。在弹出的导航器中,勾选“选择多项”,然后选中“1月”“2月”“3月”三张表,点击“转换数据”进入 Power Query 编辑器。

Step 2:执行追加操作

在 Power Query 编辑器界面中,点击 主页 → 追加查询 的下拉箭头。这里有两个选项:

  • 追加查询:将其他表直接追加到当前查询中,原查询被修改。

  • 将查询追加为新查询:创建一个全新查询来承载合并结果,原始查询不变。

推荐选择“将查询追加为新查询”,这样源表保持干净,后续排查问题也方便。

在弹出的对话框中,选择 “三个或更多表” 选项按钮,在“可用表”列表中依次选择要追加的表,点击“添加”,然后点击“确定”。

Step 3:检查并加载

追加完成后,你会在查询列表中看到一个新的查询(通常叫“追加1”)。建议做两件事:

  1. 在右侧“查询设置”中将查询重命名为有意义的名称,比如“年度汇总”;

  2. 检查数据是否有异常,比如列类型是否正确、有没有意外的 null 值。

确认无误后,点击 主页 → 关闭并上载,合并后的数据就会加载到 Excel 的新工作表中。

四、进阶玩法:一个查询搞定所有表

上面是最基础的操作。但你可能注意到了一个问题:如果源表很多(比如 12 个月的表),追加后会生成大量中间查询,查询列表变得杂乱,而且这些中间查询因为被依赖,还不能删除。

其实,追加查询的底层是 Table.Combine 函数。我们可以直接在高级编辑器里写代码,用一个查询完成多表追加,然后就可以删掉那些冗余的中间查询了。

思路很简单:把每个表的处理逻辑嵌入到一个查询中,最后用 Table.Combine 合并。代码结构大致如下:

let    // 第一个表的处理    表1 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],    表1处理 = Table.TransformColumnTypes(表1, {{"姓名", type text}, {"数量", Int64.Type}}),    // 第二个表的处理    表2 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],    表2处理 = Table.TransformColumnTypes(表2, {{"姓名", type text}, {"数量", Int64.Type}}),    // 合并    合并结果 = Table.Combine({表1处理, 表2处理})in    合并结果

这样生成一个最终查询后,那些单独的过程查询就可以放心删除了,查询列表清爽很多。

五、避坑指南:三个常见问题

问题 1:刷新后数据翻倍(递归问题)

这是新手最常踩的坑。当你把追加后的结果加载回当前工作簿,下一次刷新时,Power Query 会把这张结果表也当作源表追加进去,导致数据不断翻倍。

解决方法:在“源”步骤中过滤掉结果表。具体做法是打开查询的“源”步骤,在表名列中筛选,排除掉追加结果表的名称。

问题 2:列名有细微差异导致匹配失败

比如一张表写的是“客户编号”,另一张写的是“客户编号 ”(末尾多了一个空格),Power Query 会认为是两个不同的列,导致匹配失败。

解决方法:在追加之前,统一各表的列名。可以用“转换 → 格式 → 修整”去掉首尾空格,或者用“替换值”统一命名。

问题 3:数据类型不兼容

如果一列在表 A 中是数字,在表 B 中混入了文本(比如“待录入”),刷新时会报类型转换错误。

解决方法:在追加前检查各表的列类型是否一致,或者将类型转换步骤放在追加之后统一处理。

六、真正的杀手锏:一键刷新

追加查询最大的价值不在于“合并”本身,而在于自动化。

设置好追加查询后,以后每次源数据有更新,你只需要在“数据”选项卡中点击 全部刷新,或者在查询右键菜单中选择“刷新”,合并结果就会自动更新。

更进一步,你可以设置 打开文件时自动刷新:在“数据 → 查询和连接”中右键查询,选择“属性”,勾选“打开文件时刷新数据”。这样每次打开工作簿,汇总表就是最新的。

对于需要每月汇总报表的岗位来说,这个功能的效率提升是巨大的——从每次花 30 分钟复制粘贴,变成 3 秒钟点击刷新。

总结

Power Query 追加查询的核心要点回顾:

  1. 追加是纵向合并,按列名匹配而非列位置,不同列自动用 null 填充;

  2. 推荐用“将查询追加为新查询” ,保持源表不变,便于管理和排查;

  3. 用 Table.Combine 可以一个查询搞定所有表,避免中间查询堆积;

  4. 注意递归问题,刷新前务必过滤掉结果表;

  5. 设置自动刷新,让汇总从“每月一次的手工活”变成“打开即用”。

如果你还没有用过 Power Query,建议从今天开始尝试。哪怕只是把 3 张表合成 1 张,你也会感受到它带来的效率提升。一旦掌握了追加查询,你会发现:数据汇总这件事,原来可以这么轻松。

相关学习资料