37

我是 VBA 的新手,我正在尝试想出一种方法来删除网站列单元格包含单词的所有行(如果可能的话,向上移动单元格)none。该表包含 5000 多条记录,这将为我节省大量时间。

我很感激任何建议。提前谢谢了!

4

7 回答 7

70

这不一定是 VBA 任务 - 使用自动过滤器最容易解决此特定任务。

1.插入自动过滤器(在 Excel 2010 中单击主页->(编辑)排序和过滤器->过滤器)
2.过滤“网站”列
3.标记“无”并删除它们
4.清除过滤器

于 2013-07-12T10:55:27.147 回答
19

好的,我知道这适用于 VBA,但如果您需要一次性批量删除,您可以使用以下 Excel 功能: http: //blog.contextures.com/archives/2010/06/21/fast-way-to -find-and-delete-excel-rows/希望这对任何人都有帮助

查找字符串“paper”的示例:

  1. 在“查找和替换”对话框中,在“查找内容”框中键入“paper”。
  2. 单击查找全部,以查看带有“纸张”的单元格列表
  3. 选择列表中的一个项目,然后按 Ctrl+A 以选择整个列表,并选择工作表上的所有“纸”单元格。
  4. 在功能区的主页选项卡上,单击删除,然后单击删除工作表行。
于 2014-10-02T11:33:59.120 回答
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)列

于 2015-06-01T09:29:03.257 回答
7

我想添加到@MBK 的答案。虽然我发现@MBK 的答案对解决类似问题非常有帮助,但如果@MBK 包含如何过滤特定列的屏幕截图会更好。在此处输入图像描述

于 2015-09-08T16:13:38.493 回答
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-Jul 以便UsedRange正确或将偏移量更改为 2 行而不是.Offset(1,0).

通常,在我这样做之前,.Delete我将使用而不是 Delete 运行宏.Select,这样我可以确定正确的范围将被删除,这可能值得检查以确保适当的范围被删除。

于 2013-07-12T02:44:28.247 回答
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
于 2013-07-12T02:14:48.840 回答
-1
  1. 删除第 1 行和第 2 行,以便您的标题位于第 1 行
  2. 把它放在一个宏中(它会检查第 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

于 2020-03-26T17:58:54.827 回答