2014-09-08 9 views
1

У меня есть список из 20 000 адресов электронной почты в одном столбце и столбец одинакового размера, который я хочу сравнить. Я хочу отмечать записи в первом столбце, которые также отображаются во втором. Я написал этот код, чтобы это произошло:Сравнение одного столбца ячеек с другим

Sub macro() 

Dim i As Long 
Dim n As Long 

i = 2 

For i = 2 To 27934 

n = 2 

For n = 2 To 20824 

If Cells(i, 1) = Cells(n, 7) Then 
    Cells(i, 3) = 1 

End If 

Next n 

Next i 

End Sub 

Это говорит мне о несоответствии типа. Я попробовал несколько других вариантов, например, цикл while. Я уверен, что есть миллион других способов сделать это, но я не могу понять это. Кто-нибудь получил минуту, чтобы помочь?

+0

Cells() получает объект, вы должны получить значение от объекта. Попробуйте ячейки (i, 1) .value. Несоответствие типа, вероятно, вы назначаете объекту ячейки значение 1. – Alter

+0

. Одно примечание: вам не нужно назначать цикл 'i = 2' before for, как вы это делаете в начале самого цикла. Таким образом, оставляя строки кода 4 и 6, работают одинаково, но на самом деле они более «эффективны». –

+0

Вы код для меня работает (я точно копирую/вставляю код). Возможно, у вас есть некоторые необычные данные или объекты на вашем листе. Можете ли вы опубликовать более подробную информацию? – nunzabar

ответ

0

Если данные в ColumnsA (будет помечен) и B, начиная с row2:

=IFERROR(MATCH(A2,B:B,0),"") 

в С2 и скопировал вниз должны «получить работу», и относительно быстро.

0

простое решение было бы добавить второй список в первый и сделать (Home лента) условное форматирование -> правила изюминкой ячейки -> Дубликат значения

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