Как я могу удалить строки, которые совпадают из одного столбца Excel с другим файлом Excel?С VBA - PullRequest
0 голосов
/ 24 августа 2018

Привет и спасибо за вашу помощь.

У меня есть два файла 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, потому что я пробовал записывать макрос, но не работает должным образом. Есть идеи, как сделать это возможным?

Maria

1 Ответ

0 голосов
/ 25 августа 2018

Я создал очень грубый код, который может работать только для ваших нужд.Я не знаю, как выглядят ваши рабочие листы и каковы ваши точные потребности, но я просто предположил, что вы просто сопоставляете каждую ячейку столбца C Excel 1 со значениями в столбце A Excel 2, и, если есть совпадение,ячейка в строке C Excel 1 будет удалена.

Книга Excel1:

enter image description here

Книга Excel2:

enter image description here

Код:

Sub Macro1()

Start = 2

'Change path to your excel's file name
'This will open your 2nd excel file so that you won't have to open it evertime. Delete when not needed
Workbooks.Open ("C:\Users\Pops\Desktop\Excel2.xlsm")

'The deletion of the row will mess up with the For-Next loops so I included a GoTo so this is where it will end up
ReLoop:

'Counts how many rows are in your worksheets
Total_rows_Excel1 = Workbooks("Excel1.xlsm").Worksheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row
Total_rows_Excel2 = Workbooks("Excel2.xlsm").Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row

'Loops on all the rows on your worksheet
For i = Start To Total_rows_Excel1
    For j = 2 To Total_rows_Excel2
        If Workbooks("Excel1.xlsm").Worksheets("Sheet1").Range("C" & i) = Workbooks("Excel2").Worksheets("Sheet1").Range("A" & j) Then
            Workbooks("Excel1").Worksheets("Sheet1").Rows(i).Delete Shift:=xlUp 'Deletes the rows in Excel1 that have a match from Excel2
            Start = i 'This will let the loop to start at the last row it stopped when it loops again so it's less computationally taxing
            GoTo ReLoop
        End If
    Next j
Next i

End Sub

Таким образом, при нажатии кнопки все совпадения в столбце C Excel 1 и столбце A Excel 2 будут удалены..

Результат:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...