Excel删除包含指定内容的行
Sub 删除包含指定内容的行()
'在工作中经常遇到需要筛选出不包含指定内容的数据行
' 删除包含指定内容的行 宏
'用这个宏可以解决问题
'sheet2内A列保存指定的内容,I1单元格保存指定内容的行数
'J1单元格保存需要操作的数据行数+2
'sheet1中B列用来对比,第一行为空行,第二行为标题行
'从第三行开始操作,操作后第一行一定会被删除
'对比当前单元格和指定内容有相同的就标记此行,最后一起删除。
Dim tm, im, jm, numx, delrng As Range, jmi, i, j, dict As Object
tm = Timer
numx = 0
jmi = 0
Sheets("Sheet2").Select
im = Cells(1, 9).Value
jm = Cells(1, 10).Value
'引用勾选:VBA窗体-工具-引用-勾选“Microsoft Scripting Runtime”
'生成字典
Set dict = CreateObject("scripting.dictionary")
For i = 1 To im
dict(CStr(Cells(i, 1).Value)) = ""
Next
Sheets("Sheet1").Select
'设置标记区域为第一行
Set delrng = Rows(1)
Dim js
For j = 3 To jm
'如果当前单元格存在于字典中
If dict.exists(CStr(Cells(j, 2).Value)) Then
'将当前行加入标记区域
Set delrng = Union(delrng, Rows(j))
numx = numx + 1
jmi = jmi + 1
End If
Next
delrng.Delete
With Sheet2
.Cells(1, 10).Value = jm - jmi
.Cells(1, 2).Value = "总共删除了" & numx & "行"
.Cells(2, 3).Value = "用时:" & Format(Timer - tm, "0.00") & "秒"
End With
End Sub