Excel 如果单元格包含字符串X,则删除整行
我是VBA新手,我正试图想出一种方法来删除网站列单元格中包含单词Excel 如果单元格包含字符串X,则删除整行,excel,vba,excel-2010,excel-2007,Excel,Vba,Excel 2010,Excel 2007,我是VBA新手,我正试图想出一种方法来删除网站列单元格中包含单词none的所有行(并将单元格向上移动,如果可能的话)。该表包含5000多条记录,这将为我节省大量时间 我感谢你的建议。非常感谢 试试这个 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
none
的所有行(并将单元格向上移动,如果可能的话)。该表包含5000多条记录,这将为我节省大量时间
我感谢你的建议。非常感谢
试试这个
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
在另一篇评论中提到了这一点,但你可以试试这样的东西
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
我还没有测试过它,它来自内存,所以它可能需要一些调整,但它应该在不循环数千行的情况下完成工作。您需要删除Jul 11以便UsedRange
正确,或者将中的偏移量(1,0)
更改为2行,而不是1行
通常,在执行
.Delete
之前,我将使用运行宏。选择而不是Delete,这样我可以确保删除正确的范围,这可能值得检查以确保删除适当的范围。这不一定是VBA任务-使用自动筛选最容易解决此特定任务
1.插入自动筛选(在Excel 2010中单击主页->(编辑)排序和筛选->筛选)
2.在“网站”栏中筛选
3.标记“无”并删除它们
4.清除筛选器
好的,我知道这是用于VBA的,但是如果需要一次性批量删除,可以使用以下Excel功能:希望这对任何人都有帮助
查找字符串“paper”的示例:
在“查找和替换”对话框中,在“查找内容”框中键入“纸张”
单击“全部查找”,查看带有“纸张”的单元格列表
选择列表中的一个项目,然后按Ctrl+A,选择整个列表,并选择工作表上的所有“纸张”单元格
在功能区的“常用”选项卡上,单击“删除”,然后单击“删除图纸行”
在“开发人员选项卡”中,转到“Visual Basic”并创建一个模块。复制粘贴以下内容。记住根据需要更改代码。然后运行模块
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:输入当前文件的行数
“如果”中的数字“5”表示第五(E)列
我想补充@MBK的答案。虽然我发现@MBK的答案对解决类似问题非常有帮助,但如果@MBK包含如何过滤特定列的屏幕截图,那就更好了
删除第1行和第2行,使标题位于第1行
将其放入宏中(它将检查第75000行,如果您愿意,可以降低该数字)
列(“E:E”)。选择
自动筛选
ActiveSheet.Range($E$1:$E$75000”)。自动筛选字段:=1,标准1:=“无”
范围(“E2:E75000”)。特殊单元格(xlCellTypeVisible)。选择
Selection.EntireRow.Delete
ActiveSheet.Cells.EntireRow.Hidden=False
ActiveSheet.Range(“$E$1:$E$75000”)。自动筛选字段:=1
列(“E:E”)。选择
自动筛选
范围(“E2”)。选择
范围(“A1”)。选择
对于5000+条记录,最好是过滤和删除,而不是循环。@matzone,您不应该使用这种循环来删除进程。如果您确实想删除某些类型的所有元素,请始终使用for i=5000到4步骤-1
。有一个答案几乎正是您所要寻找的。您只需要修改criteria用于自动筛选。太棒了!这是我能找到的批量执行此操作的唯一方法(不使用VBA)。这是应该被接受的答案。当您有50000多行时,使用筛选器是不可行的。易建联:这是一个仅限windows的解决方案,不幸的是在OSX Excel中不起作用。除非OP特别询问如何通过VBA执行此操作。