Нужна помощь.Проверка данных Resiprok в Excel
Как проверить взаимные данные в excel. Дело что-то вроде этого:
b => a
ошибка, потому что это обратная (уже есть a=>b
) и так далее ..
спасибо ..
Нужна помощь.Проверка данных Resiprok в Excel
Как проверить взаимные данные в excel. Дело что-то вроде этого:
b => a
ошибка, потому что это обратная (уже есть a=>b
) и так далее ..
спасибо ..
Для этого вы можете использовать функцию 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, то возвращается «ошибка».
Формула только что также будет возвращать «ошибка», если текущая строка содержит ранее сталкивались ответную пару. Таким образом, вы можете получить следующее: 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"),"")
Эта формула проверяет пересмотренные ли обратная пары в текущей строке ранее сталкивались и отмечены как «ошибка». Если он имеет, то текущая пара не помечена как «ошибка».
Я думаю, что это не сработает, если вы положите еще одну пару b-> c в конец списка. –
Он вернет ошибку для этой пары, потому что она является обратной из ранее встреченной пары c-> b. Я думаю, это вопрос, является ли это результатом, который желает @Philips. – chuff
IMO он не должен быть помечен как ошибка, потому что в строке 5 это нормально. Но вы правы, @ Филипс должен сказать то, что он точно хочет. –
Это может быть сделано с помощью встроенного -in функции - я разделил его на несколько столбцов (чтобы быть более понятным для понимания), но он может быть объединен в одну большую сложную формулу.
В столбце 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.
Я надеюсь, что это поможет.
На самом деле это не сработает, если буква «d» была в B6. Причина в том, что функция MATCH() ищет первое вхождение - и это слабость этого решения. –
Я нашел мой предыдущий пост не будет работать во всех случаях, например когда я положил «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";"")
resiprok = взаимными? – barrowc
- это создание функции Visual Basic? – MikeD
использование цикла с VBA ... – matzone