You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Excel中合并重复行并保留非空白值或最长字符串?

如何在Excel中合并重复行并保留非空白值或最长字符串?

当然可以!这种合并重复行、保留有效数据的需求在Excel里完全能实现,我给你分享两种实用方法,你可以根据自己的Excel版本和操作习惯来选~

方法一:用Power Query(Get & Transform)可视化操作(推荐)

这个方法不用记复杂公式,全程可视化操作,适合数据量稍大的情况:

  1. 选中你的数据区域,点击顶部菜单栏的「数据」选项卡,找到「从表格/区域」(弹出对话框时记得勾选“我的表格有标题”)。
  2. 进入Power Query编辑器后,选中用来判断重复的列(比如你的「Name」列),点击「转换」选项卡的「分组依据」。
  3. 在分组依据弹窗里,设置:
    • 分组依据:选择「Name」列
    • 新列名:随便起个名字,比如「合并记录」
    • 操作:选择「所有行」,然后点击确定。
  4. 现在你会看到每个姓名对应一行“记录”,点击「合并记录」列旁边的展开按钮,选择「提取值」——不过如果要精准保留非空白值,更推荐添加自定义列:
    点击「添加列」→「自定义列」,针对每个字段写公式,比如Email列:
    [Email] ?? [Email.1]
    
    这个公式的意思是:如果第一个Email非空就用它,否则用第二个重复行里的Email。同理给Phone、Address列都创建对应的自定义列。
  5. 最后删掉多余的原始列,点击「关闭并上载」,就能得到合并好的表格啦!

方法二:用公式实现(适合快速小批量数据)

如果不想用Power Query,用函数也能搞定:

  1. 首先提取唯一姓名:在空白列输入 =UNIQUE(A:A)(A列是你的姓名列),回车后会自动生成所有不重复的姓名。
  2. 合并非空白值:以Email列为例,在唯一姓名对应的单元格输入:
    =TEXTJOIN("",TRUE,IF(A:A=D2,B:B,""))
    
    这里D2是唯一姓名的单元格,旧版Excel需要按「Ctrl+Shift+Enter」触发数组公式,新版直接回车就行。这个公式会把同一个姓名下所有非空的Email合并成一个字符串。
  3. 取最长字符串:如果要保留某个字段里最长的内容,比如Email列,用这个公式:
    =INDEX(B:B,MATCH(MAX(LEN(IF(A:A=D2,B:B,""))),LEN(IF(A:A=D2,B:B,"")),0))
    
    同样旧版按「Ctrl+Shift+Enter」,这个公式会找到同一个姓名下最长的Email内容并返回。

举个直观的例子

你原来的表格大概是这样:

NameEmailPhoneAddress
Janejane@test.com
Jane123-4567123 Main St
John987-6543
Johnjohn@test.com456 Oak Ave

用上面的方法处理后,就能得到你想要的结果:

NameEmailPhoneAddress
Janejane@test.com123-4567123 Main St
Johnjohn@test.com987-6543456 Oak Ave

备注:内容来源于stack exchange,提问作者CM L

火山引擎 最新活动