Excel重复行合并:将同姓名地址的多组数字整合至同一行
嗨,这个需求我刚好经常碰到,给你两种实用的解决办法,不管数据量大小都能搞定👇
方法一:使用Excel函数组合(适合中小数据集)
如果你的数据行数不算太多,用函数组合就能快速实现:
先提取唯一的姓名地址组合
选中A:C列(Name、Surname、Address列),点击「数据」选项卡→「删除重复值」,确认后就会得到唯一的一行(比如示例里的John Doe NN)。用数组公式提取对应数字
在第一个唯一行的Number1列(比如D2单元格)输入下面的公式:=INDEX($D$2:$D$4,SMALL(IF(($A$2:$A$4=$A2)*($B$2:$B$4=$B2)*($C$2:$C$4=$C2),ROW($D$2:$D$4)-ROW($D$2)+1),COLUMN(A1)))- 注意:如果你用的是非Excel 365版本,输入完公式后要按
Ctrl+Shift+Enter触发数组计算;Excel 365直接回车就行。 - 公式逻辑:
IF筛选出和当前行姓名地址匹配的所有行,SMALL按顺序提取这些行的位置,INDEX对应取出Number列的值。
- 注意:如果你用的是非Excel 365版本,输入完公式后要按
填充公式
把D2单元格的公式向右拖动,直到出现#NUM!(说明没有更多对应数字了),这样就自动生成Number1、Number2、Number3列的内容。
方法二:使用Power Query(适合大数据量,高效省心)
如果你的数据有成百上千行,手动写公式太麻烦,Power Query是最佳选择,全程可视化操作:
导入数据到Power Query
选中你的数据区域,点击「数据」选项卡→「从表格/区域」,勾选「我的表格有标题」,点击确定进入Power Query编辑器。透视列合并数字
- 按住Ctrl选中Name、Surname、Address三列
- 点击「转换」选项卡→「透视列」
- 在弹出窗口里:
- 值列选择「Number」
- 高级选项选择「不要聚合」
- 点击确定后,所有对应数字会自动分到
Number.1、Number.2、Number.3列(可以右键重命名成你想要的Number1、Number2)。
导出整理后的数据
点击「关闭并上载」,Power Query会把整理好的表格放到新工作表里。之后如果源数据更新,只要右键点击表格→「刷新」就能自动同步结果,超省心!
实际效果对比
原数据:
| Name | Surname | Address | Number |
|---|---|---|---|
| John | Doe | NN | 1165454 |
| John | Doe | NN | 8789798 |
| John | Doe | NN | 4564566 |
整理后:
| Name | Surname | Address | Number1 | Number2 | Number3 |
|---|---|---|---|---|---|
| John | Doe | NN | 1165454 | 8789798 | 4564566 |
内容的提问来源于stack exchange,提问作者Guev4ra




