2015-03-12 2 views
0

У меня есть две таблицы, где я хочу сравнить два разных столбца и выделить все дубликаты. У меня есть код, где он проходит через один лист и находит все дубликаты, но у меня есть два отдельных файла excel, которые я хочу сравнить.Найти дубликаты по двум таблицам

Sub check_dups() 

    Dim cel As Variant 
    Dim myrange As Range 

    Set myrange = Range("a1:ad400") 
    myrange.Interior.ColorIndex = xlNone 

    For Each cel In myrange 
     If Application.WorksheetFunction.CountIf(myrange, cel) > 1 Then 
      cel.Interior.ColorIndex = 4 
     End If 
    Next 

End Sub 

Как сравнить два разных файла вместо простого сравнения данных в одном?
Также как я могу сравнить два конкретных столбца, например C1:C400 и AD1:AD400 вместо всего файла?

+0

Можете ли вы указать имена книг и имена рабочих листов для файлов, которые вам нужно сравнить? Если это так, это будет простое изменение от того, что у вас есть. – Kyle

+0

C: \ Users \ ... \ Spreadsheets \ File1.xls и File2.xls. Они оба находятся в одной папке. Имена листов - это Sheet1. –

ответ

0

Я предполагаю, что вы хотите сравнить AD1: AD400 в «File1.xlsx» к С1: C400 в «File2.xlsx»:

Sub check_dups() 

Dim cel, myrange, myrange2 As Range 'Changed to range. No need to use the extra memory for variant. 

Set myrange = Workbooks("File1.xlsx").Sheets("Sheet1").Range("ad1:ad400") 'Edited since I forgot to change this to AD1 
myrange.Interior.ColorIndex = xlNone 
Set myrange2 = Workbooks("File2.xlsx").Sheets("Sheet1").Range("C1:C400") 

For Each cel In myrange 
    If Application.WorksheetFunction.Match(cel, myrange2) >= 1 Then 
     cel.Interior.ColorIndex = 4 
    End If 
Next 

End Sub 

Примечание: Для больших наборов данных, написание первого диапазона для массив и цикл, который может быть быстрее. Для данного набора данных размера это не так.

+0

В строке 10 я получаю это: Ошибка времени выполнения '1004': Невозможно получить свойство соответствия класса WorksheetFunction. –

+0

Каковы типы данных, хранящиеся в двух диапазонах? Я только что протестировал, и это не сработало для меня. – Kyle

+0

Работает ли это только целые числа? Были некоторые числа, которые имели значение текста вместо целых чисел, вот где у меня были проблемы. Спасибо за помощь. –

Смежные вопросы