多个 Excel 表格按相同列合并成一张表
三张以上 Excel 表格怎么根据一个或多个相同列合并成一张表?本文说明何时用纵向堆叠、何时按关键列匹配,给出 XLOOKUP 与 VLOOKUP 的操作步骤、多列关键字写法和合并后的核对方法。
如果你手里有三张、四张甚至更多的 Excel 表格,每张都记录了同一批人或同一批产品的不同信息,比如员工编号对应的部门、工资和考勤,你大概率需要把它们拼成一张完整的表。直接复制粘贴很容易错行,行数一多,人工对齐几乎不可能不出错。
这类需求的关键在于"按什么对齐"。用 Excel 把多个表根据相同数据合并,本质是找一列各表共有的标识,比如编号、订单号或日期加门店,把其他表的信息逐行匹配过来。这篇文章讲三张以上表格怎么按一个或多个相同列合并,并说明它和简单纵向堆叠的区别。读完后,你可以自己搭出一张合并表,并检查结果是否对齐。
下面的方法以 Excel 的通用函数为例。XLOOKUP 需要较新的版本,较早的版本可以把它换成 VLOOKUP。如果表格原本嵌在 PDF 里,可以先转成 Excel 再处理。
多个表怎么合并?一句话结论
先看各表是"字段相同、行数不同",还是"字段不同、靠同一编号对应"。前者纵向堆叠,后者按关键列匹配。
| 你的情况 | 推荐做法 | 原因 |
|---|---|---|
| 几张表的列名和含义完全相同,只是月份或部门不同 | 纵向堆叠,把所有行接在一张表下面 | 没有需要对齐的内容,直接追加行即可 |
| 每张表都有同一个编号列,要把其他字段补到主表 | 以主表为准,用 XLOOKUP 按编号逐列取值 | 按编号对齐,每行结果都能追溯到源表 |
| 单个编号不足以区分每一行,例如"日期 + 门店" | 在各表新增辅助键列,拼接多列后再匹配 | 辅助键把多列变成一个可比较的值 |
| 编号在某张表里重复出现 | 先去重或汇总,再做匹配 | 重复会让一行主表记录对应多行结果,行数对不上 |
| 表格原本嵌在 PDF 里 | 先把 PDF 导出为 Excel,再按上面的方法合并 | 合并前需要的是可编辑的数据表 |
开始之前:先确认这几点
动手前花几分钟检查,能省掉大部分返工。
- 确定主表。 主表是最终要保留全部行的那张表,其他表的信息都会匹配到它上面。主表选错,结果会缺行或多出空行。
- 确认关键列在各表中的含义一致。 同样叫"编号"的列,可能一张表是员工号,另一张表是工号加部门代码。内容不一致时,匹配出来的数字看似正确,实际上对不上人。
- 检查数据格式。 文本型数字(如"1001")和真正的数字(1001)在 Excel 中不会被视为相等。日期也可能一张表是日期格式,另一张表是文本。
- 检查空格和大小写。 末尾多出的一个空格,或全角与半角的差异,都会让匹配失败,而肉眼几乎看不出来。
- 保留原表备份。 合并过程会新增列和公式,建议另存为一个新文件再操作,原始数据留作核对的依据。
在 Excel 里按一列编号合并三张表的步骤
以主表 A 列为员工编号、表 2 的 A 列为同一编号、C 列为部门为例:
- 选定主表并标出关键列。 确认主表的编号在 A 列,表 2 和表 3 也有对应的编号列。
- 统一关键列格式。 把各表的编号列设为相同的格式,并用查找替换去掉多余空格,必要时用 TRIM 函数清理。
- 在主表右侧新增一列,写入匹配公式。 例如在 D2 输入
=XLOOKUP($A2,表 2!$A:$A,表 2!$C:$C,"未找到")。其中"表 2"换成实际的工作表名。 - 向下填充公式。 把 D2 的公式拖动或双击填充柄,应用到主表的最后一行。
- 对表 3 重复同样的操作。 把结果放在 E 列,公式中引用表 3 的编号列和要取回的列,不要误用表 2 的区域。
- 筛选"未找到"并逐一核对。 有些是真的缺少记录,有些是格式或空格导致的假缺失,需要分别处理。
- 固定结果后另存。 确认无误后,选中公式列复制,再用"选择性粘贴为数值"替换原公式,避免源表改动后结果跟着变化,最后另存为新文件。
如果你的 Excel 版本不支持 XLOOKUP,可以把第 3 步的公式换成 =VLOOKUP($A2,表 2!$A:$C,3,FALSE)。这里的 3 表示从 A 到 C 区域的第 3 列,即部门所在列,FALSE 表示精确匹配。
两个表根据多个相同数据合并怎么做?
当一个编号不足以区分每一行时,比如同一员工在不同月份都有记录,就需要用多列作为关键字。做法是在每张表中新增一列辅助键,把关键列拼接成一个值:
- 在主表和源表的空白列输入
=A2&"|"&B2,其中 A 列是第一个关键列,B 列是第二个关键列。 - 用"|"之类的分隔符,避免 "1" 和 "11" 拼接后产生歧义。
- 拼接的每一列都要格式统一,日期建议统一转为文本或同一种日期格式。
- 之后按辅助键列做匹配,公式与单列时相同,只是查找值换成辅助键列。
三张以上表格时,每张表都要有同样结构的辅助键,否则匹配结果无法对应。
📊 核心对比
| 对比维度 | 纵向堆叠 | 按关键列合并 |
|---|---|---|
| 适用情况 | 字段完全相同,内容是追加关系 | 字段不同,内容是补充关系 |
| 结果行数 | 等于各表行数之和 | 通常等于主表行数,前提是源表关键列不重复 |
| 对齐依据 | 不需要对齐,按位置接续 | 按关键列的值逐行对应 |
| 常见错误 | 列顺序不一致,导致数据错位 | 格式或空格不一致,导致大量"未找到" |
做完后逐项核对
合并完成后,不要直接交付,至少检查以下几项:
| 检查项 | 怎么看 | 有问题怎么办 |
|---|---|---|
| 行数 | 合并后的主表行数应与原主表一致 | 行数变多,说明源表关键列有重复,先去重或汇总再匹配 |
| 未找到的值 | 筛选"未找到"或 #N/A 的单元格 | 检查格式和空格;确认仍缺失时,标注原因而不是随意填补 |
| 抽样对照 | 随机选 5 行,回到源表人工比对 | 不一致时检查公式引用的区域是否错位,例如是否少写了美元符号 |
| 数字与日期 | 看是否变成数字串或日期错乱 | 统一格式后重新匹配,并确认显示与实际值一致 |
| 公式是否已固定 | 点开单元格,看是否仍是公式 | 需要存档或发送时,转为数值,避免源表变动后结果变化 |
❓ 常见问题(FAQ)
1. 合并后大量出现 #N/A,是怎么回事?
多数情况是关键列格式不一致或有多余空格。先用 TRIM 清理空格,再把文本型数字统一转为数字,重新匹配即可。确认仍无对应记录时,才说明源表确实缺数据。
2. 同一个编号在源表里出现多次,怎么合并?
匹配函数默认只取第一条记录,其他记录会被忽略。合并前先统计重复,用 COUNTIF 判断哪些编号重复;如果需要保留全部信息,应先汇总(如求和、取新一条),再做匹配。
3. 三张表的关键列名字不一样,要改名吗?
不需要。列名只是标题,匹配看的是单元格内容。在公式中分别指定各表的关键列和取值列即可,只要内容代表同一个对象。
4. 表格在 PDF 里,怎么先转成 Excel?
可以用 OmniDoc 桌面客户端(download.omnidoc.top)的 PDF 编辑器,把 PDF 导出为 Excel。扫描版 PDF 需要先做 OCR 识别再导出。导出后仍要核对数字和列是否对齐,再进行合并。
📝 总结
用 Excel 把多个表根据相同数据合并,关键是先判断是纵向堆叠还是按关键列匹配,再统一关键列的格式。按上面的步骤搭好公式后,用行数、未找到的值和抽样对照做三道核对,合并表就比较可靠了。


