我提取了2个在Excel表中导出的数据库报告。我必须基于reportA中已经存在的数据从reportA中删除行。
(示例:如果第5列在该列的任何单元格中包含单词“ Pepsi ”,请删除reportA中的整行)
我还必须基于reportB中特定列中存在的数据从reportA中删除行。因此,如果reportA的特定列中的任何单元格都包含基于关键字的reportB的特定列中的确切单元格值,请删除reportA中的该行。
(示例:过滤reportB第4列中包含单词“ Coke ”或“ Sprite ”的任何单元格,reportB具有“ Coke Zero”和“ Sprite”的匹配项装运”在第4列的2个单元格中。从reportA的第5列中删除包含“可乐零”或“雪碧装运”的每行。
进行了一些研究,并提出了以下脚本,以便至少从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中的行。
答案 0 :(得分:0)
您可以在过滤器中一次使用多个值。要在过滤器中使用多个值,您需要使用1)一维数组作为条件,并使用2)xlFilterValues
枚举值作为Operator
参数。在下面的示例中,我用两个值过滤了范围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