如何在Excel中基于参照列合并多列并按指定列匹配重排数据?
嘿,这两个都是Excel里处理关联数据的高频需求,我来给你分享几个实用的解决办法:
1. 如何在Excel中基于参照列合并两组多列数据?
这里核心是通过共同的参照列(比如球员ID、姓名)把两组数据关联起来,有两种常用思路:
函数法(适合快速小批量处理)
假设你的参照列是「球员ID」(比如A列和F列都是ID),要把F-K的信息合并到A-C后面:
- 如果你用的是Excel 365/2021(支持动态数组),直接在D2单元格输入:
=XLOOKUP($A2,$F:$F,$G:$K,"未找到",0)
回车后会自动填充G-K对应的所有列,下拉就能完成整表合并,非常省心。 - 要是用的旧版Excel,只能用VLOOKUP逐个列引用:
D2单元格写=VLOOKUP($A2,$F:$K,2,FALSE)(对应G列数据),E2写=VLOOKUP($A2,$F:$K,3,FALSE)(对应H列数据),以此类推,直到把F-K的所有列都引用过来。
Power Query法(适合大数据量/重复操作)
如果数据量很大,或者以后还要重复做类似合并,用Power Query更高效:
- 分别选中A-C和F-K的数据区域,点击「数据」选项卡→「从表格/区域」,把两组数据都加载到Power Query编辑器。
- 在其中一个查询界面,点击「合并查询」→「合并查询作为新查询」,选择两个查询,关联列选共同的参照列(比如球员ID),连接类型选「左外部」(保留A-C的所有行)。
- 点击合并后列的展开按钮,勾选你需要的F-K字段,最后点击「关闭并上载」,合并好的数据就会出现在新工作表里。
2. 调整F-K列顺序以匹配C列的行值
这个需求是让F-K的球员信息行顺序和C列的排名列表完全对应,同样有几种方法:
动态数组函数快速生成
还是用XLOOKUP(Excel 365/2021适用):
- 找一块空白区域(比如M列开始),在M2输入:
=XLOOKUP($C2,$F:$F,$G:$K,"未找到",0)
回车后会自动生成对应球员的G-K所有信息,下拉填充后,M-Q列就是完全匹配C列顺序的F-K数据,最后复制这些数据,粘贴值到原来的F-K列即可。
INDEX+MATCH组合(兼容所有Excel版本)
如果是旧版Excel,用INDEX+MATCH的组合也能实现:
- 在M2输入
=INDEX($G:$G,MATCH($C2,$F:$F,0))(对应G列数据),然后往右拉到Q列,再下拉填充整行,就能得到对应顺序的所有信息,同样复制粘贴值替换原列就行。
Power Query批量排序
要是经常需要调整顺序,Power Query可以一劳永逸:
- 把F-K数据加载到Power Query,点击「添加列」→「自定义列」,输入公式:
=List.PositionOf(Excel.CurrentWorkbook(){[Name="排名表"]}[Content][球员列], [球员ID])
(这里「排名表」是A-C数据的表格名称,「球员列」是C列的表头,「球员ID」是F列的表头,根据实际情况替换) - 按这个新生成的自定义列排序,然后关闭并上载,就能得到和C列顺序完全一致的F-K数据了。
内容的提问来源于stack exchange,提问作者user3562812




