如何删除一个Excel列中与另一个Excel文件匹配的行?使用VBA

时间:2018-08-24 14:30:16

标签: excel excel-vba excel-formula

嗨,谢谢您的帮助。

我有两个Excel文件,可以将它们称为Excel 1(活动文件)和Excel 2(如果有重复,我只需要比较)。 我想从Excel 1中删除在Excel 2中找到的匹配项。仅从Excel 1中删除匹配项,并保持Excel 2完整。

我通常使用 Vlookup 进行此过程,然后删除匹配项。
[示例] [1]:=VLOOKUP(C2,'[End Use Screening Log.xlsb]EUS Log'!$A:$A,1,0))

这是Vlookup之后产生的宏代码:

 Sub Testing()
'
' Testing Macro
'
'
    Workbooks.Open Filename:= _
        "Z:\Customer Screening\End User Screening Log\End Use Screening Log.xlsb"
    Windows("Copy of WW33 TEST .xlsm").Activate
    Range("G2").Select
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[-4],'[End Use Screening Log.xlsb]EUS Log'!C1,1,0)"
    Range("G2").Select
    Selection.AutoFill Destination:=Range("G2:G16")
    Range("G2:G16").Select
    Range("G1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$Q$16").AutoFilter Field:=7, Criteria1:=Array( _
        "4997466", "6392634", "9026175", "9362935", "9363654", "9369599", "9370171"), _
        Operator:=xlFilterValues
    Range("A2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Rows("2:2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Delete Shift:=xlUp
    Range("E15").Select
    Selection.AutoFilter
    Range("G2:G9").Select
    Selection.ClearContents
    Range("Q2").Select
End Sub

但是,我正在尝试使过程自动化,只需单击一下即可。
我想将C中的Excel 1列与A中的Excel 2列进行比较。

我想我需要使用VBA来执行此操作,因为我已经尝试过它记录宏,但是无法正常工作。 有什么想法使之成为可能吗?

玛丽亚

1 个答案:

答案 0 :(得分:1)

我创建了一个非常粗糙的代码,该代码可以满足您的需求。我不知道您的工作表是什么样子以及您的确切需求是什么,但是我只是假设您只是将Excel 1的C列的每个单元格与Excel 2的A列的值进行匹配,如果匹配,则Excel 1 C行中的单元格将被删除。

Excel1工作簿:

enter image description here

Excel2工作​​簿:

enter image description here

代码:

{{1}}

因此,单击按钮,将删除Excel 1的C列与Excel 2的A列中的所有匹配项。

结果:

enter image description here