这并不一定是VBA任务 - 这个特定任务最容易使用自动筛选来完成。
1.插入自动筛选器(在Excel 2010中点击主页->(编辑)排序和筛选->筛选器)
2.筛选“网站”列
3.标记“无”并将其删除
4.清除筛选器。
好的,我知道这是针对VBA的,但如果您需要进行一次批量删除,可以使用以下Excel功能:http://blog.contextures.com/archives/2010/06/21/fast-way-to-find-and-delete-excel-rows/希望这能帮到任何需要帮助的人
例如查找字符串“paper”:
Sub sbDelete_Rows_IF_Cell_Contains_String_Text_Value()
Dim lRow As Long
Dim iCntr As Long
lRow = 390
For iCntr = lRow To 1 Step -1
If Cells(iCntr, 5).Value = "none" Then
Rows(iCntr).Delete
End If
Next
End Sub
lRow: 将当前文件的行数放入其中。
“If”中的数字“5”是指第五列(E列)。
Sub FilterAndDelete()
Application.DisplayAlerts = False
With Sheet1 'Change this to your sheet name
.AutoFilterMode = False
.Range("A3:K3").AutoFilter
.Range("A3:K3").AutoFilter Field:=5, Criteria1:="none"
.UsedRange.Offset(1, 0).Resize(ActiveSheet.UsedRange.Rows.Count - 1).Rows.Delete
End With
Application.DisplayAlerts = True
End Sub
UsedRange
正确或在 .Offset(1,0)
中将偏移量改为 2 行而不是 1 行。
通常,在使用 .Delete
之前,我会使用 .Select
运行宏,而不是直接删除,这样我就可以确保正确的范围将被删除,这也值得做一下检查,以确保适当的范围被删除。
试一下这个...
Dim r as Range
Dim x as Integer
For x = 5000 to 4 step -1 '---> or change as you want //Thanx 4 KazJaw
set r = range("E" & format(x))
if ucase(r.Value) = "NONE" then
Rows(x).EntireRow.Delete
end if
Next
For i=5000 to 4 Step -1
! - Kazimierz Jawor