【问题标题】:Delete rows from one workbook based on data in another workbook根据另一工作簿中的数据从一个工作簿中删除行
【发布时间】:2019-07-03 16:50:28
【问题描述】:

我提取了 2 个导出到 Excel 表中的数据库报告。我必须根据报告 A 中已存在的数据从报告 A 中删除行。

(示例:如果第 5 列在该列的任何单元格中包含单词“Pepsi”,则删除报告 A 中的整行)

我还必须根据报告 B 中特定列中存在的数据从报告 A 中删除行。因此,如果报告 A 的特定列中的任何单元格包含报告 B 中基于关键字的特定列的确切单元格值,请删除报告 A 中的该行。

(示例:过滤reportB的第4列中包含单词“Coke”或“Sprite”的任何单元格,reportB匹配“Coke Zero”和“Sprite” Shipment”在第 4 列的 2 个单元格中。从 reportA 的第 5 列中删除包含“Coke Zero”或“Sprite Shipment”的每一行

做了一些研究,并提出了以下脚本,以至少从 reportA 中删除行。

Sub Clean_Up_Food_Items()

  Application.Calculation = xlCalculationManual
  Application.ScreenUpdating = False

   Dim lo As ListObject

   Set lo = Sheet2.ListObjects(1)
   lo.Parent.Activate 'Activate sheet that table is on.

   lo.AutoFilter.ShowAllData

   lo.Range.AutoFilter Field:=5, Criteria1:="Coke*"

   Application.DisplayAlerts = False       
     lo.DataBodyRange.SpecialCells(xlCellTypeVisible).Delete
   Application.DisplayAlerts = True

   lo.AutoFilter.ShowAllData

   lo.Range.AutoFilter Field:=4, Criteria1:="Fanta*"

   Application.DisplayAlerts = False
     lo.DataBodyRange.SpecialCells(xlCellTypeVisible).Delete
   Application.DisplayAlerts = True

   lo.AutoFilter.ShowAllData

  Application.Calculation = xlCalculationAutomatic
  Application.ScreenUpdating = True

End Sub

以上方法至少可以根据reportA中存在的数据删除行,但我不知道如何根据reportB过滤掉数据以删除reportA中的行。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您可以在过滤器中一次使用多个值。要在过滤器中使用多个值,您需要使用 1) 用于条件的一维数组和 2) 用于 Operator 参数的 xlFilterValues 枚举值。在下面的示例中,我使用两个值过滤范围 A1 的第一列。

    Sub Z()
    
        Dim rngA As Range
        Dim arrValuesToFilter As Variant
    
        arrValuesToFilter = [{"Fanta", "Pepsi"}]
        Set rngA = Range("A1").CurrentRegion
        rngA.AutoFilter Field:=1, Criteria1:=arrValuesToFilter, Operator:=xlFilterValues
    
    End Sub
    

    【讨论】:

    • 感谢 JohnyL 的清理提示。抱歉,因为我试图掌握如何将其应用于我的工作表,但“字段”部分可以包含多个值吗?另外,我需要先比较一列的结果,删除行,清除搜索过滤器,然后重复。类似于我在上面不太干净的脚本中所做的,以确保它不会一次过滤所有值(如果有意义的话)。
    • “字段”部分是否可以包含多个值如果您需要多个字段,则为每个字段添加此类过滤器。
    猜你喜欢
    • 2022-11-25
    • 2021-07-06
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    相关资源
    最近更新 更多