【问题标题】:How can I delete all rows in excel that meet a certain criteria, plus subsequent rows如何删除excel中满足特定条件的所有行以及后续行
【发布时间】:2020-02-20 08:33:46
【问题描述】:

Example of what I'm trying to get rid of.

我正在尝试删除似乎已格式化为分页的工作表中的垃圾数据。在每个新“页面”的开头是 G 列中的一个单元格,上面写着“页面 X”。每页后面的六行都是我要删除的垃圾数据,还有上百个“页”。

我希望能够编写一个公式来搜索工作表中包含文本“页面”的每个单元格(至少在 G 列中),然后删除该行以及接下来的六行。

【问题讨论】:

  • 你能给出一个带有示例数据的示例屏幕截图吗?这对于 Union 循环 + 删除似乎很理想,但查看您的工作表将确保没有误解

标签: excel vba


【解决方案1】:
  1. 循环遍历Column G 中的所有单元格
  2. 查找单元格=page 和....
  3. 将这些单元格 + 接下来的 6 行添加到 Union (单元格集合)
  4. 删除末尾的Union

Sub Maid()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") '<-- Update
Dim DeleteMe As Range
Dim LR As Long

LR = ws.Range("G" & ws.Rows.Count).End(xlUp).Row

    For i = 2 To LR
        If ws.Range("G" & i) = "page" Then
            If Not DeleteMe Is Nothing Then
                Set DeleteMe = Union(ws.Range("G" & i).Resize(7), DeleteMe)
            Else
                Set DeleteMe = ws.Range("G" & i).Resize(7)
            End If
        End If
    Next i

    If Not DeleteMe Is Nothing Then
        DeleteMe.EntireColumn.Delete
    End If

End Sub

【讨论】:

  • 感谢您的帮助!这似乎可行(出于我的目的,将 EntireColumn 稍微更改为 EntireRow),但问题是页码增加,所以我需要找到“Page 1”然后是“Page 2”等等。有没有办法找到包含“页面”的单元格?或者甚至只是将每个包含“页面”的单元格转换为相同的值,然后执行?
  • 那为什么在你最初的问题中没有呢?只需查看单元格是否像页面或包含页面。在此处使用通配符匹配
  • 啊,我不知道这是可能的
  • 或者“如果左(单元格,4)=页面那么”
猜你喜欢
  • 1970-01-01
  • 2016-12-04
  • 1970-01-01
  • 1970-01-01
  • 2020-11-18
  • 1970-01-01
  • 2017-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多