VBA如果工作表1上的单元格匹配工作表2上的单元格 – 删除行?
我有两个工作表,表1和表2。
在表1中,我创build了一个表格,允许用户在单元格B21,B26,I21,I26,P21,P26中input值。
然后通过点击提交,数据被插入到下一个可用行的A,B,C,D,E和F列的表2中。
我也试图创build一个macros,一旦运行,将删除表2中的值匹配sheet1上的那一行。
目前我通过使用IF语句保持简单,但是这给我一个types不匹配的错误。
Sub QuickCull() If Sheets(1).Range("B21").Value = Sheets(2).Range("A:A").Value And _ Sheets(1).Range("B26").Value = Sheets(2).Range("B:B").Value And _ Sheets(1).Range("P21").Value = Sheets(2).Range("C:C").Value And _ Sheets(1).Range("I21").Value = Sheets(2).Range("D:D").Value And _ Sheets(1).Range("I26").Value = Sheets(2).Range("E:E").Value And _ Sheets(1).Range("P26").Value = Sheets(2).Range("F:F").Value Then Rows(ActiveCell.Row).EntireRow.Delete End If End Sub
请有人告诉我我要去哪里错了吗?
首先,您需要查看是否满足第一个条件,因此我们将使用Match
函数在Sheets(2)
的整个列A中查找范围(“B21”)中的值。 如果它返回一个成功的匹配,我们将使用该结果( RowMatch
表示一个行号)。
其次,我们需要检查Sheets(2)
中RowMatch
中的其他所有匹配值。 如果是这样,那么我们可以删除Sheets(2)
那一行。
试试下面的代码 :
Option Explicit Sub QuickCull() Dim RowMatch As Long With Sheets(2) If Not IsError(Application.Match(Sheets(1).Range("B21").Value, .Range("A:A"), 0)) Then RowMatch = Application.Match(Sheets(1).Range("B21").Value, .Range("A:A"), 0) If Sheets(1).Range("B26").Value = .Range("B" & RowMatch).Value And _ Sheets(1).Range("P21").Value = .Range("C" & RowMatch).Value And _ Sheets(1).Range("I21").Value = .Range("D" & RowMatch).Value And _ Sheets(1).Range("I26").Value = .Range("E" & RowMatch).Value And _ Sheets(1).Range("P26").Value = .Range("F" & RowMatch).Value Then .Rows(RowMatch).Delete End If End If End With End Sub