从多个工作表中删除行

时间:2018-08-30 00:31:27

标签: excel

我已经在网上冲浪了一段时间,但我终生无法弄清楚如何删除同一工作簿中包含关键字的多个工作表中的行。

第1张(总体)包含所有数据,接下来的5张(QB,RB,WR,DEF,K)包含第1张(总体)的数据。

我要完成的工作是搜索名称(例如Aaron Rodgers),然后从包含该引用的所有工作表中删除所有行(因此,在上面的示例中,Aaron Rodgers的行将从“总体”中删除 QB,因为他的名字将同时出现在这两个表中。

名称搜索将一直在变化,因此它是一种搜索,它会破坏所有工作表中包含我选择的参考名称的行。

1 个答案:

答案 0 :(得分:0)

您需要:

  1. 定义搜索字符串
  2. 定义父级工作簿
  3. 循环浏览该工作簿中的选定工作表
  4. 找到包含搜索字符串的行并将其删除

代码:

Option Explicit

Sub destroy()
    Dim str As String, w As Long, m As Variant, wss As Variant

    wss = Array("Overall", "QB", "RB", "WR", "DEF", "K")

    '1. define the search string
    str = Application.InputBox(prompt:="search for:", Title:="search and destroy", _
                             Default:="Aaron Rodgers", Type:=xlTextValues)

    If CBool(Len(str)) And str <> "False" Then

        '2. define the parent workbook
        With ThisWorkbook

            '3. loop through selected worksheets within that workbook
            For w = LBound(wss) To UBound(wss)
                With .Worksheets(wss(w))

                    '4. locate rows containing the search string and delete them
                    m = Application.Match(str, .Columns(1), 0)
                    Do While Not IsError(m)
                        .Cells(m, "A").EntireRow.Delete
                        m = Application.Match(str, .Columns(1), 0)
                    Loop

                End With
            Next w

        End With

    End If
End Sub