You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求编写Excel公式:合并重复行并保留有效数据

Excel 去重并保留有效数据公式方案

场景说明

针对包含重复行的表格,按Name列去重后:

  • 若同一Name对应列的所有行数据一致,直接保留该值
  • 若数据不一致,保留非空的有效数据(优先排除空值,选择有实际内容的数值/文本)

输入示例:

NameM1M2
MO-1180.8274%1.3
MO-1180.8274%1.3
MO-260.0012%4.1
MO-260

输出示例:

NameM1M2
MO-1180.8274%1.3
MO-260.0012%4.1

方案1:Excel 365/2021(动态数组公式)

步骤1:提取唯一Name列表

在空白单元格(比如D2)输入公式,自动生成唯一的Name值:

=UNIQUE(A:A)

注:假设原Name列在A列,从A2开始有数据

步骤2:提取对应列的有效数据

针对M1列(原B列),在E2输入公式并回车(自动溢出填充):

=XLOOKUP(TRUE, NOT(ISBLANK(FILTER(B:B, A:A=D2))), FILTER(B:B, A:A=D2))

针对M2列(原C列),在F2输入公式:

=XLOOKUP(TRUE, NOT(ISBLANK(FILTER(C:C, A:A=D2))), FILTER(C:C, A:A=D2))

原理:用FILTER筛选出同一Name下的所有列数据,再用XLOOKUP定位第一个非空的有效数据;若所有数据一致,自然返回该值。


方案2:旧版Excel(无动态数组)

步骤1:提取唯一Name列表

在D2输入公式,下拉填充直到出现空白:

=INDEX(A:A, MATCH(0, COUNTIF(D$1:D1, A:A), 0))

输入后按Ctrl+Shift+Enter作为数组公式执行

步骤2:提取对应列的有效数据

M1列(E2)公式:

=INDEX(B:B, MAX(IF(A:A=D2, IF(B:B<>"", ROW(B:B), 0), 0)))

M2列(F2)公式:

=INDEX(C:C, MAX(IF(A:A=D2, IF(C:C<>"", ROW(C:C), 0), 0)))

输入后同样按Ctrl+Shift+Enter执行数组公式;原理是找到同一Name下非空数据的最大行号,提取对应单元格的值,优先保留非空有效数据

内容的提问来源于stack exchange,提问作者just

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:15:48