2014-10-06 3 views
0

У меня есть лист excel с несколькими электронными таблицами. В каждой из таблиц есть «первое имя» и «последнее имя» столбцов. Я записал макрос, который показывает мне повторяющиеся строки, имеющие формат «firstname lastname».Найти дубликаты ячеек в нескольких листах excel

=IF(SUMPRODUCT(($B$2:$B$1000=B2)*1,($C$2:$C$1000=C2)*1)>1,"Duplicates","No duplicates") 

Вышеупомянутая формула может найти повторяющиеся строки на одном листе. Как настроить формулу так, чтобы она соответствовала другим листам. Также будет использоваться формула или VBA.

+0

Для версий Excel, которые 2007 или более поздней версии, существующая формула была бы лучше с гораздо более эффективными COUNTIFS() функция, как это: '= IF (COUNTIFS (B: B, B2, C: C, C2) -1, «Дубликаты», «Нет дубликатов»). Не нужно беспокоиться о полных ссылках на столбцы, поскольку они будут обрабатываться только в объеме ваших данных, в отличие от 'SUMPRODUCT (...)' обработки каждой ссылки диапазона ячеек дословно. К сожалению, вы не можете просто добавить ссылку на несколько листов в диапазон критериев, например 'Sheet1: Sheet3! B: B'. – Jeeped

+0

@Jeeped Спасибо за функцию COUNTIFS(). Его более мелкие, чистые и эффективные. И кроме COUNTIFS(), есть ли какая-либо другая функция, которую я мог бы использовать, чтобы дубликаты также были найдены из других листов. – Roland

+0

В Excel нет встроенной функции, которая принимает критерии в том, что обычно упоминается как ссылка 3D-диапазона (т. Е. Диапазон одной или нескольких ячеек на нескольких листах). Если бы у вас было всего несколько таблиц, чтобы посмотреть, я бы предложил просто добавить несколько «COUNTIFS (...)» вместе. Если у вас было больше, чем несколько, то UDF мог бы стать лучшим маршрутом. – Jeeped

ответ

0

Вы можете обмануть Excel в соответствии с заданием 3D-диапазона в качестве параметра COUNTIFS с INDIRECT и обработкой массива с помощью обертки SUMPRODUCT. С именами рабочих листов, подлежащая обработке в Z2: Z4, то это будет считаться дубликатами через рабочие листы для первых и последних имен в столбцах B & C.

=SUMPRODUCT(COUNTIFS(INDIRECT("'"&$Z$2:$Z$4&"'!B:B"),B2,INDIRECT("'"&$Z$2:$Z$4&"'!C:C"),C2))

Вы должны быть в состоянии включить этот стандарт формулу в ваш оператор IF() для распознавания дубликатов.

Обратите внимание, что INDIRECT считается volatile Функция, которая пересчитывается с любыми изменениями в книге. В зависимости от объема ваших данных, вероятно, вы испытаете некоторое отставание в расчетах.

enter image description here

+0

Я не могу реализовать вашу функцию. Я действительно не получил часть инструкции IF(). – Roland

+0

@Roland - простая формула позволяет подсчитать количество нескольких листов (в тех же столбцах). Количество одного будет означать отсутствие дубликатов, и что-то большее, чем это, будет представлять собой повторяющиеся значения. например '= IF (SUMPRODUCT (COUNTIFS (ДВССЫЛ (" ' "& $ Z $ 2: $ Z $ 4 &"' B: B!"), В2, ДВССЫЛ (" ' "& $ Z $ 2: $ Z $ 4 &"'! C: C "), C2)) - 1," Дубликаты "," Нет дубликатов "). – Jeeped

+0

Привет @ Jeeped, я попытался использовать ваш ответ. Но я думаю, что я делаю что-то неправильно. В любом случае, как для обходного пути, я скопировал все данные на одном листе и использовал = IF (COUNTIFS (B: B, B2, C: C, C2) -1, «Дубликаты», «Нет дубликатов»). Не лучший способ, но все же. Спасибо за вашу помощь ! – Roland

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