我是 VBA 的新手,我正在尝试想出一种方法来删除网站列单元格包含单词的所有行(如果可能的话,向上移动单元格)none
。该表包含 5000 多条记录,这将为我节省大量时间。
我很感激任何建议。提前谢谢了!
我是 VBA 的新手,我正在尝试想出一种方法来删除网站列单元格包含单词的所有行(如果可能的话,向上移动单元格)none
。该表包含 5000 多条记录,这将为我节省大量时间。
我很感激任何建议。提前谢谢了!
这不一定是 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”的示例:
在“开发人员选项卡”中,转到“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)列
在另一条评论中提到了这一点,但你可以尝试这样的事情。
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-Jul 以便UsedRange
正确或将偏移量更改为 2 行而不是.Offset(1,0)
.
通常,在我这样做之前,.Delete
我将使用而不是 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
把它放在一个宏中(它会检查第 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