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
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
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
7条答案
按热度按时间bq8i3lrv1#
这不一定是一个VBA任务-这个特定的任务是最容易解决的自动过滤器。
1.插入自动筛选器(在Excel 2010中点击主页-〉(编辑)排序和筛选-〉筛选)
2.在"网站"列上筛选
3.标记"无"并将其删除
4.清除过滤器
nx7onnlm2#
好的,我知道VBA的这一点,但如果您需要一次性批量删除,您可以使用以下Excel功能:希望这对任何人都有帮助
查找字符串“paper”的示例:
1.在“查找和替换”对话框的“查找内容”框中键入“paper”。
1.单击“查找全部”,查看包含“paper”的单元格列表
1.选择列表中的一个项目,然后按Ctrl+A,以选择整个列表,并选择工作表上的所有“paper”单元格。
1.在功能区的“开始”选项卡上,单击“删除”,然后单击“删除工作表行”。
0pizxfdo3#
在“开发者选项卡”中,转到“Visual Basic”并创建一个模块。复制粘贴以下内容。记住根据您的需要更改代码。然后运行该模块。
lRow:输入当前文件的行数。
“如果”中的数字“5”用于第五(E)列
7gs2gvoe4#
我想补充一下@MBK的回答。虽然我发现@MBK的回答对解决类似问题很有帮助,但如果@MBK包含如何过滤特定列的屏幕截图,那就更好了。x1c 0d1x
ckx4rj1h5#
这是在另一个评论中提到的,但你可以尝试这样的东西。
我还没有测试过这个,它来自内存,所以它可能需要一些调整,但它应该可以在不循环数千行的情况下完成工作。您需要删除11-Jul以使
UsedRange
正确,或者将.Offset(1,0)
中的偏移量更改为2行而不是1行。一般来说,在我执行
.Delete
之前,我会用.Select
而不是Delete来运行宏,这样我就可以确保正确的范围将被删除,这可能值得检查,以确保适当的范围正在被删除。zysjyyx46#
试试这个...
kulphzqa7#
1.删除第1行和第2行,使标题位于第1行
1.将其放入宏中(它将检查第75000行,如果愿意,您可以降低该数字
第一个月