我是VBA的新手,我正试图想出一种方法来删除网站列单元格包含单词none
的所有行(如果可能的话,将单元格移位)。该表包含5000多条记录,这将为我节省大量时间。
我感谢任何建议。非常感谢提前!
答案 0 :(得分:69)
这不是VBA任务 - 使用自动过滤器最简单地解决此特定任务。
1.插入自动过滤器(在Excel 2010中单击主页 - >(编辑)排序和过滤器 - >过滤器)
2.过滤“网站”栏目
3.标记'无'并删除它们
4.清除过滤器
答案 1 :(得分:17)
好的我知道这对于VBA,但如果您需要为一次性批量删除执行此操作,您可以使用以下Excel功能:http://blog.contextures.com/archives/2010/06/21/fast-way-to-find-and-delete-excel-rows/希望这有助于任何人
查找字符串的示例" paper":
答案 2 :(得分:8)
在"开发人员标签"转到" 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)
答案 3 :(得分:5)
答案 4 :(得分:1)
这是在另一条评论中提到的,但你可以尝试这样的事情。
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
我没有对此进行测试,它来自内存,因此可能需要进行一些调整,但它应该完成工作而不会遍历数千行。您需要删除11月7日以使UsedRange
正确或将偏移更改为2行,而不是.Offset(1,0)
中的1。
通常,在我.Delete
之前,我将使用.Select
而不是删除方式运行宏,这样我可以确保删除正确的范围,这可能值得检查以确保正在删除适当的范围。
答案 5 :(得分:0)
试试这个......
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
答案 6 :(得分:-1)
将其放在宏中(它将通过行75000进行检查,如果您愿意的话,可以降低数字
Columns("E:E").Select
Selection.AutoFilter
ActiveSheet.Range("$E$1:$E$75000").AutoFilter Field:=1, Criteria1:="none"
Range("E2:E75000").SpecialCells(xlCellTypeVisible).Select
Selection.EntireRow.Delete
ActiveSheet.Cells.EntireRow.Hidden = False
ActiveSheet.Range("$E$1:$E$75000").AutoFilter Field:=1
Columns("E:E").Select
Selection.AutoFilter
Range("E2").Select
Range("A1").Select