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

如何在Excel中基于B列重复且F列为NO的条件删除重复行

Excel批量删除指定重复行需求

我有2000多行Excel数据,B列存在重复值,需要删除同时满足B列重复且F列值为NO的记录。

示例原始数据

Column AColumn BColumn F
WEED CONTROLNC_1014_93979Yes
WEED CONTROLNC_1014_93979No
PEST ANIMALNC_1015_82299Yes
PEST ANIMALNC_1015_82299No
WEED CONTROLNC_1014_93579Yes
PEST ANIMALNC_1012_508225No

注:上表中F列为No且B列重复的行是待删除记录

处理后目标数据

Column AColumn BColumn F
WEED CONTROLNC_1014_93979Yes
PEST ANIMALNC_1015_82299Yes
WEED CONTROLNC_1014_93579Yes
PEST ANIMALNC_1012_508225No

三种解决方法

方法1:辅助列筛选法(新手友好)

  1. 插入新列(如G列),在G2单元格输入公式:
    =AND(COUNTIF($B:$B,B2)>1,F2="No")
    
    下拉填充到所有行,TRUE代表需删除的行,FALSE代表保留行。
  2. 选中数据区域,点击「数据」选项卡的「筛选」按钮。
  3. 在G列筛选菜单勾选TRUE,选中这些行右键删除即可。

方法2:高级筛选法(高效无残留)

  1. 在空白区域(如I1:K1)复制表头,按如下设置条件区域:
    • I2、J2填*,K2填No
    • I3、J3填*,K3填Yes
    • J4输入公式:=COUNTIF($B:$B,J3)=1
      (该条件表示:保留F=Yes的行,或F=No但B列唯一的行,自动排除B重复且F=No的行)
  2. 选中原始数据,点击「数据」→「高级」,选择「将筛选结果复制到其他位置」,指定列表区域为原始数据、条件区域为I1:K4,复制到空白区域即可得到目标数据。

方法3:VBA脚本法(批量重复处理)

按下Alt+F11打开VBA编辑器,插入模块,粘贴以下代码后运行:

Sub DeleteDuplicateNoRows()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim dict As Object
    
    Set ws = ActiveSheet
    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
    Set dict = CreateObject("Scripting.Dictionary")
    
    ' 统计B列所有值的出现次数
    For i = 2 To lastRow
        If Not dict.Exists(ws.Cells(i, "B").Value) Then
            dict(ws.Cells(i, "B").Value) = 1
        Else
            dict(ws.Cells(i, "B").Value) = dict(ws.Cells(i, "B").Value) + 1
        End If
    Next i
    
    ' 从后往前删除符合条件的行,避免索引混乱
    For i = lastRow To 2 Step -1
        If dict(ws.Cells(i, "B").Value) > 1 And UCase(ws.Cells(i, "F").Value) = "NO" Then
            ws.Rows(i).Delete
        End If
    Next i
    
    Set dict = Nothing
    Set ws = Nothing
    MsgBox "处理完成!"
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:41:02