Excel如何合并值相同的行并保留两行所有列的对应数据
这个需求本质是按姓名合并重复行,将同姓名多行的非空值填充到对应列,两种实现方法如下:
方法1:Power Query(全版本Excel通用,无需函数基础)
- 选中数据源任意单元格,点击顶部菜单栏「数据」→「从表格/区域」,勾选「我的表具有标题」后确认,数据会自动加载到Power Query编辑器
- 选中name列,点击顶部「转换」→「分组依据」,分组依据选择「name」,新列名填写「临时表」,操作选择「所有行」,点击确定
- 点击顶部「添加列」→「自定义列」,依次添加4个自定义列,公式分别为:
- 列名time 1:
List.RemoveNulls(Table.Column([临时表],"time 1")){0}? - 列名time 2:
List.RemoveNulls(Table.Column([临时表],"time 2")){0}? - 列名time 3:
List.RemoveNulls(Table.Column([临时表],"time 3")){0}? - 列名Time 4:
List.RemoveNulls(Table.Column([临时表],"Time 4")){0}?
- 列名time 1:
- 选中「临时表」列右键删除,点击编辑器左上角「关闭并上载」,合并后的数据会自动导出到新的Excel工作表
方法2:公式法(适用Excel 365/2021及以上版本)
- 找空白区域作为输出表的位置,在输出表A2单元格输入公式提取唯一姓名:
=UNIQUE(原数据A列范围),替换为你实际的原数据A列范围即可 - 输出表B2(对应time 1列)输入公式:
=TEXTJOIN("",TRUE,FILTER(原数据B列范围,原数据A列范围=$A2,"")) - 将B2公式向右拉动填充到E列(对应Time 4列),再选中整行公式向下拉动填充到所有姓名行,即可得到合并后的结果
该方法适配时间、文本等所有单元格内容格式,会自动忽略空单元格,直接提取同姓名同列的唯一非空值。
内容的提问来源于stack exchange,提问作者Scott McCune
相关产品推荐
相关产品推荐

