如图,有A列数据和F列数据,要求将A列中所有与F列中的相同的数据对应的行直接删除。
A列有1600行,F列有1000行左右,A列包含F列。
代码如下:
Sub DeleteMatchingRows()
Dim ws As Worksheet
Dim lastRowA As Long, lastRowF As Long, i As Long, j As Long
Dim matchFound As Boolean
Set ws = ActiveSheet
With ws
lastRowA = .Cells(.Rows.Count, "A").End(xlUp).Row
lastRowF = .Cells(.Rows.Count, "F").End(xlUp).Row
Dim dataA() As Variant
Dim dataF() As Variant
'将A列和F列的数据分别存储到数组中
dataA = .Range("A1:A" & lastRowA).Value
dataF = .Range("F1:F" & lastRowF).Value
'从底部向上遍历A列
For i = lastRowA To 1 Step -1
matchFound = False
'检查F列中是否存在与A列当前单元格相同的数据
For j = 1 To lastRowF
If dataA(i, 1) = dataF(j, 1) Then
matchFound = True
Exit For
End If
Next j
'如果找到匹配,删除A列中的行
If matchFound Then
.Rows(i).Delete
End If
Next i
End With
End Sub
运行完代码后,A列删除了1000多条数据。