2013-07-04 5 views
0

Нужна помощь.Проверка данных Resiprok в Excel

Как проверить взаимные данные в excel. Дело что-то вроде этого:

enter image description here

b => a ошибка, потому что это обратная (уже есть a=>b) и так далее ..

спасибо ..

+0

resiprok = взаимными? – barrowc

+0

- это создание функции Visual Basic? – MikeD

+0

использование цикла с VBA ... – matzone

ответ

2

Для этого вы можете использовать функцию COUNTIFS.

Если предположить, что данные за исключением заголовков находится в диапазоне A2:B8, первая формула, что вам нужно будет ввести в ячейку C2 будет:

=IF(COUNTIFS(A$2:A2,B2,B$2:B2,A2)>0,"error","") 

Эта формула будет затем скопирована вниз до последней строки данных ,

COUNTIFS подсчитывает количество раз, когда набор критериев выполняется в нескольких диапазонах. Если критерий 1 встречается в диапазоне 1, а критерий 2 встречается в диапазоне 2 и т. Д., То 1 добавляется к сумме COUNTIFS.

В этом случае мы используем COUNTIFS, чтобы проверить, находится ли конкретный человек2 в диапазоне Person1 и соответствует ли соответствующий человек1 в диапазоне Person2.

Поскольку вы не хотите, чтобы первое появление пары person1/person2 считалось «ошибкой», COUNTIFS применяется к расширяющемуся диапазону, который растет, чтобы включать каждую дополнительную пару, которая проверяется, но не включает никаких пары далее вниз по списку.

Например, в первой формуле в ячейке C2, то COUNTIFS применяется только к диапазону A2:B2, во второй формуле в ячейке C3 оно применяется к A2:B3, и так далее.

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

Если формула находит обратную пару, которая будет обозначена значением COUNTIFS> 0, то возвращается «ошибка».

formula with results in worksheet

Формула только что также будет возвращать «ошибка», если текущая строка содержит ранее сталкивались ответную пару. Таким образом, вы можете получить следующее: b->c "" ... c->b "error" ... b->c "error". Если вместо этого вы хотите, чтобы только обратная из первоначально встреченной пары рассматривалась как «ошибка», тогда требуется более сложная формула.

 
    =IF(COUNTIFS(A$2:A2,B2,B$2:B2,A2)>0,IF(COUNTIFS(A$2:A2,B2,B$2:B2,A2,C$2:C2,"error")>0,"","error"),"") 

Эта формула проверяет пересмотренные ли обратная пары в текущей строке ранее сталкивались и отмечены как «ошибка». Если он имеет, то текущая пара не помечена как «ошибка».

revised formula with results in worksheet

+0

Я думаю, что это не сработает, если вы положите еще одну пару b-> c в конец списка. –

+0

Он вернет ошибку для этой пары, потому что она является обратной из ранее встреченной пары c-> b. Я думаю, это вопрос, является ли это результатом, который желает @Philips. – chuff

+0

IMO он не должен быть помечен как ошибка, потому что в строке 5 это нормально. Но вы правы, @ Филипс должен сказать то, что он точно хочет. –

0

Это может быть сделано с помощью встроенного -in функции - я разделил его на несколько столбцов (чтобы быть более понятным для понимания), но он может быть объединен в одну большую сложную формулу.

enter image description here

В столбце D проверить, если значение из столбца B присутствует в верхних строках в столбце A.

=MATCH(B3;$A$2:A2;0)

В столбце B я делать то же самое в обратном направлении.

=MATCH(A5;$B$4:B4;0)

Если значение не представлено MATCH возвращает ошибку # ..., поэтому в столбцах G и HI изменить это в 0.

=IF(ISERROR(D5);0;D5)

В проверке колонки СО, если обе позиции равны и если они не равны нулю.

=AND(G5>0;H5>0;G5=H5)

Если в столбце J ИСТИНА, то я печатаю «ошибка» в колонке L.

Я надеюсь, что это поможет.

+0

На самом деле это не сработает, если буква «d» была в B6. Причина в том, что функция MATCH() ищет первое вхождение - и это слабость этого решения. –

2

Я нашел мой предыдущий пост не будет работать во всех случаях, например когда я положил «d» в B6.

Таким образом, я создал другую базу решений для конкатенации значений. Идея заключается в том, что я объединяю значения в столбцах A и B (столбец D = =CONCATENATE(A4;B4)). I конкатенировать столбцы B и A в столбце E (=CONCATENATE(B4;A4)).

И я ищу позицию из колонки E в верхних строках столбца D (=IF(ISERROR(MATCH(E5;$D4:D$4;0));0;MATCH(E5;$D4:D$4;0))).

И я должен сделать еще один контроль для повторяющегося появления «хороших» отношений (без этого он не сработает в строке 11). Итак, столбец G = =IF(F5>0;INDEX($F4:F$4;F5);0).

В колонке я есть конечная evalutation =IF(AND(F4>0;G4=0);"error";"")

enter image description here

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