根据单元格值条件删除Excel表中带有标题的行

时间:2019-07-16 14:52:48

标签: excel vba

我有一个Excel工作表,我想根据条件从其中删除一些行来进行清理。如果列表上特定列中的单元格包含一组值中的一个值,则具有此单元格的行应从列表中删除。

工作表上的数据表的标题带有列名。

到目前为止,我已经尝试根据一个标准来清洁我的床单: 第一列中的单元格应与“ Stacy R”的名称匹配。

我在这里阅读了最好的方法是使用自动过滤器。我提供了以下解决方案:

  1. 选择工作表上的所有数据:范围为Rng3。
  2. 在所选范围旁边,添加一个新列。 从Rng3向右移一列,向下移动一列以跳过标题。 扩展到新范围(比Rng3多1列和1行)
  3. 为此新列中除第一行(标题)之外的每一行设置以下公式 .FormulaR1C1 =“ = RC01 =”“ Stacy R”“” 如果第一列中的单元格包含 Stacy R ,则此公式返回TRUE,否则返回FALSE。
  4. 向新添加的列上方的单元格添加一个过滤器,并将其条件设置为TRUE。这将仅在工作表上显示与过滤条件匹配的行,并且仅显示带有“ Stacy R”的行。
  5. 现在删除显示的行。
Sub RemoveRowswFilter()

    Dim rng1 As Range, rng2 As Range, rng3 As Range
    Set rng1 = Cells.Find("*", , xlValues, , xlByColumns, xlPrevious)
    Set rng2 = Cells.Find("*", , xlValues, , xlByRows, xlPrevious)
    Set rng3 = Range(Cells(rng2.Row, rng1.Column), Cells(1, rng1.Column))

    Application.ScreenUpdating = False
    With rng3.Offset(1, 1).Resize(rng3.Rows.Count, 1)
        .FormulaR1C1 = "=RC01=""Stacy R"""

    End With
    With rng3.Offset(0, 1).Resize(rng3.Rows.Count, 1)
        .AutoFilter Field:=1, Criteria1:="TRUE"
    End With
    With rng3.Offset(1, 1).Resize(rng3.Rows.Count - 1, 1)
        .EntireRow.Delete
        On Error Resume Next
    End With
    Application.ScreenUpdating = True
End Sub

我想通过删除包含“ Stacy R”(不带引号)的所有行来清理工作表数据。

我创建的宏无法正常工作:它使我失去了一张干净的纸。相反,我希望它应该将所有原始数据都保留在没有任何单元格包含我的critera的地方。

请帮助我清理工作表并根据条件删除行。谢谢。

0 个答案:

没有答案