【问题标题】:Efficient way to delete rows (Multiple criterias) VBA删除行的有效方法(多个条件)VBA
【发布时间】:2014-11-03 10:56:48
【问题描述】:

我有一张表,其中 Col A 中有一个字符串 A,而 Col B 由字符串 B 组成。

我想在 Col A 中保留带有单词“Begründung”的行,在 Col B 中保留带有单词“Nein”的行。

我正在使用从这些来源Efficient way to delete entire row if cell doesn't contain '@'Delete Row based on Search Key VBA 找到的以下代码

Sub KeepOnlyAtSymbolRows()
    Dim ws As Worksheet
    Dim rng As Range
    Dim lastRow As Long

    Set ws = ActiveWorkbook.Sheets("Sheet1")

    lastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row

    Set rng = ws.Range("A1:A" & lastRow)

    ' filter and delete all but header row
    With rng
        .AutoFilter Field:=1, Criteria1:="<>*Begründung*"
        .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End With

    ' turn off the filters
    ws.AutoFilterMode = False
End Sub

我想为 Col B 添加另一个标准。无论在 Col B 中的任何地方遇到“Nein”,都会保留该行并删除其余行,但同时保留 Col A 中的“Begrüundung”并删除其余行。

换句话说,只要在工作表中遇到单词“Begründung”和“Nein”,就会保留这些行,而删除其余行。

如果有人能提供帮助,我将不胜感激。

【问题讨论】:

  • 因此,为了保留行,两个条件都必须为真:ColA 包含“Begrundung”,ColB 包含“Nein”。对吗?
  • @RonRosenfeld 不,不是。 Begründung 或 Nein。我在下面提供了一些示例以使其更清楚,例如单元格 A1 由 Begründung 组成,B1 由 Ja - Keep the Row 单元格 A2 由 Prüfkriterien 组成,B2 由 Nein 组成Nein- 删除行
  • “只要在工作表中遇到 'Begründung' 和 'Nein' 字样,就会保留这些行” ...“B4 包含 Nein- 删除该行”。这是正确的吗?
  • 如果自动筛选没有保留所有要删除的行,请尝试高级筛选,您可以在其中“或”条件。如果需要,您还可以使用它将结果复制到新范围。一旦你有这个工作,录制一个宏。

标签: vba excel


【解决方案1】:

试试这个:

Sub DeleteWithMultipleColumnsCriterias()
    Dim ws As Worksheet
    Dim rng As Range
    Dim lastRow As Long

    Set ws = ActiveWorkbook.Sheets("Sheet1")

    lastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row

    Set rng = ws.Range("A1:B" & lastRow)

    ' filter and delete all but header row
    With rng
        .AutoFilter Field:=1, Criteria1:="<>*Begründung*"
        .AutoFilter Field:=2, Criteria1:="<>*Nein*"
        .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End With

    ' turn off the filters
    ws.AutoFilterMode = False
End Sub

【讨论】:

  • 注释掉这个'.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete'ws.AutoFilterMode = False,看看运行代码后过滤器的样子
  • @vba4all- 所有这些都被完全过滤,并没有真正的帮助。我非常感谢您为我的查询投入的时间。非常感谢您提前
  • @wildradical :检查此 URL 的多个条件:stackoverflow.com/questions/18135144/…
  • @PareshJadhav- 非常感谢,尽管定义的多个标准是针对单个列的。我正在寻找多个列的多个条件。例如Begründung 在 Col A 即 Col 1 中遇到,而 Nein 在 Col B 即 Col 2 中遇到。
  • @wildradical 发布一个 vba4all 的代码无法正常工作的示例怎么样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-23
  • 2022-08-18
  • 2011-06-04
  • 2014-11-09
  • 1970-01-01
  • 2015-11-05
相关资源
最近更新 更多