2015-05-19 4 views
0

Я хочу сравнить данные между двумя листами, используя VBA. Обычно я бы просто использовал функцию COUNTIF() или использовал цикл, но в этом случае я хочу сравнить значения из двух разных столбцов (в сочетании, они будут представлять собой отдельное значение) с соответствующими значениями в двух разных столбцах на другом листе ,Сравнение Excel VBA с двумя атрибутами

enter image description here

В примере, показанном, я хочу, чтобы сравнить 4 различных перестановок выделены на другой лист, чтобы увидеть, если эти 4 уникальных перестановок существуют в другом листе. Например, если на другом листе есть «AD7 - Abidjan», я хочу, чтобы это обозначалось как разница, и ячейки были выделены или сохранены где-то в другом месте. Другой лист может содержать более или менее (или нулевые) варианты.

Я не уверен, как использовать COUNTIF, используя данные, подобные этому. Я предпочитаю не конкатенировать данные/переместить их в другой диапазон. Есть ли способ запустить этот анализ без манипуляции данными?

Спасибо!

+0

Вы пробовал 'COUNTIFS()'? –

+0

Я не использовал COUNTIFS() в этом контексте. То, что я пытаюсь настроить, - это цикл, поэтому для каждой ячейки в выделенных двух диапазонах он должен сравниваться с двумя разными диапазонами на другом листе. Как и в. B2 + D2 - одно значение в цикле, а затем оно сравнивается со всеми значениями в этих двух столбцах на другом листе. Можете ли вы привести пример того, как это можно использовать в этом контексте? – NDubonix

+0

Я думаю, что @TimWilliams было приятно указывать вам в правильном направлении. Пожалуйста, попробуйте то, что он предлагает, и мы будем помогать, когда вы столкнетесь с проблемами. –

ответ

0

Следующий цикл может быть использован для сравнения обоего полей в каждом листе:

For Each i In Sheets("First_Sheet_Name").Range("First_Column") 

Set rng = Sheets("Second_Sheet_Name").Range("First_Column") 
Set rng2 = Sheets("Second_Sheet_Name").Range("Second_Column") 

If Application.WorksheetFunction.CountIfs(rng, i, rng2, i.Offset(0, 2)) = 0 Then 

    [Do something here] 

End If 

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