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

如何跨两个Excel工作簿匹配多单元格并删除对应行?

解决方法

方法一:公式标记+筛选删除

  1. 假设Sample0的待匹配列表在Sheet1的A列,Sample1中需要匹配的三个值分别在其工作表的A1、A2、A3单元格(可根据实际位置调整)。
  2. 在Sample0的空白列(比如B列)首行输入公式:
    =OR(A1=Sample1!$A$1,A1=Sample1!$A$2,A1=Sample1!$A$3)
    
    下拉填充到所有数据行,返回TRUE的行就是需要删除的匹配行。
  3. 选中B列数据区域,点击「数据」选项卡的「筛选」,筛选出值为TRUE的行。
  4. 选中筛选出的所有行,右键选择「删除行」,最后取消筛选即可。

方法二:VBA宏批量处理

如果需要重复执行这类操作,用宏更高效:

  1. 打开两个目标工作簿,按Alt+F11打开VBA编辑器。
  2. 插入新模块,粘贴以下代码:
    Sub DeleteMatchingRows()
        Dim ws0 As Worksheet, ws1 As Worksheet
        Dim matchVals As Variant
        Dim lastRow As Long, i As Long
        
        ' 替换为实际的工作簿和工作表名称
        Set ws0 = Workbooks("Sample0.xlsx").Worksheets("Sheet1")
        Set ws1 = Workbooks("Sample1.xlsx").Worksheets("Sheet1")
        
        ' 获取Sample1中的三个匹配值,假设在A1:A3区域
        matchVals = ws1.Range("A1:A3").Value
        
        lastRow = ws0.Cells(ws0.Rows.Count, "A").End(xlUp).Row
        
        ' 从下往上遍历,避免删除行导致的序号错乱
        For i = lastRow To 1 Step -1
            If ws0.Cells(i, "A").Value = matchVals(1, 1) Or _
               ws0.Cells(i, "A").Value = matchVals(2, 1) Or _
               ws0.Cells(i, "A").Value = matchVals(3, 1) Then
                ws0.Rows(i).Delete
            End If
        Next i
    End Sub
    
  3. 根据实际情况修改代码里的工作簿名、工作表名和单元格范围,按F5运行宏即可批量删除匹配行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:30:54