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

如何按父行删除重复子行?COUNTIF公式失效问题求助

问题

需要针对每个父行删除其下的重复子行,尝试使用辅助单元格及COUNTIF公式=(COUNTIF($B$1:$B1,$B1)=1)+0,但该公式会误删其他父项中的重复子行,不符合需求。

当前数据集示例

层级项目编号
0Parent-01
2Child-01
2Child-02
2Child-03
2Child-01
2Child-02
2Child-03
2Child-01
2Child-02
2Child-03
0Parent-02
2Child-01
2Child-02
2Child-03

预期输出

层级项目编号
0Parent-01
2Child-01
2Child-02
2Child-03
0Parent-02
2Child-01
2Child-02
2Child-03

现有COUNTIF公式输出

层级项目编号计数
0Parent-011
2Child-011
2Child-021
2Child-031
2Child-010
2Child-020
2Child-030
2Child-010
2Child-020
2Child-030
0Parent-021
2Child-010
2Child-020
2Child-030

预期的COUNTIF输出

层级项目编号计数
0Parent-011
2Child-011
2Child-021
2Child-031
0Parent-021
2Child-011
2Child-021
2Child-031

解决方法

核心思路是先给每个子行标记所属的父组,再基于父组+子项的组合进行重复计数,避免跨父组的重复判断。

方法1:分步辅助列法(兼容所有Excel版本)

  1. 添加父组标记列(C列)
    在C2单元格输入以下公式,下拉填充至所有行:

    =IF(A2=0,B2,C1)
    

    作用:父行(层级=0)用自身项目编号作为组名,子行继承上一行的组名,让同属一个父行的所有子行共享同一个组标记。

  2. 添加计数辅助列(D列)
    在D2单元格输入以下公式,下拉填充:

    =(COUNTIFS($C$2:C2,C2,$B$2:B2,B2)=1)+0
    

    作用:用COUNTIFS同时匹配当前组标记和子项编号,统计从表头到当前行的出现次数,第一次出现返回1,重复出现返回0,完全匹配预期的计数结果。

  3. 筛选保留有效行
    筛选D列中值为1的行,即可得到去重后的目标数据集。

方法2:动态数组一步法(仅Excel 365/2021及以上版本)

如果使用支持动态数组的Excel版本,可直接用以下公式生成去重后的结果(无需手动筛选):

=FILTER(A:B,(COUNTIFS(SCAN("",A:A,LAMBDA(x,y,IF(y=0,B:B,x))),SCAN("",A:A,LAMBDA(x,y,IF(y=0,B:B,x))),B:B,B:B,ROW(B:B),"<="&ROW(B:B))=1)+0)

公式说明:

  • SCAN函数动态生成每个行的父组标记;
  • COUNTIFS基于父组+子项组合统计重复次数;
  • FILTER直接筛选出计数为1的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:19:57