Excel, сопоставляющий два массива - PullRequest
0 голосов
/ 29 мая 2019

У меня есть проблема, которая кажется довольно простой, но все еще не могу найти правильное решение, я хочу избежать использования VBA.

У меня две таблицы в одной электронной таблице. у обоих одинаковые столбцы - Имя, Город, Провинция. Моя цель - сравнить оба, и если три из трех значений в строке совпадают, то потяните «1», если нет, потяните 0.

Я использовал приведенные ниже формулы, но в моем случае это не работает.

=IF(AND(A2=P:P,G2=M:M,H2=L:L),1,0)

=INDEX(A:P,MATCH(A2,P:P,FALSE),MATCH(G2,M:M,FALSE),2)

=INDEX(L:P,MATCH(A5,P:P,0),MATCH(G5,M:M,0),MATCH(H5,L:L,0))

=SUMPRODUCT(--(L2:L60=H2),--(M2:M60=G2),--(P2:P60=A2),B2:B60)

Кажется, решение довольно простое, но я не могу его найти,

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 29 мая 2019

Ключевым моментом здесь является объединение столбцов, их Match на этом.

Как это

=IFERROR( IF( MATCH(H3&"_"&I3&"_"&J3, $C$2:$C$60&"_"&$B$2:$B$60&"_"&$A$2:$A$60,0), "Yes"), "No")

Выберите символ-разделитель, который иначе не появится в ваших данных (я выбрал _)

0 голосов
/ 29 мая 2019

Предположение: значения просто должны существовать, а не то, что они должны быть из эквивалентной строки.

=If(IfError(Match(A2,P:P,0),0)*IfError(Match(G2,M:M,0),0)*IfError(Match(H2,L:L,0),0)>0,1,0)

Для каждого IfError вы будете выводить номер строки (> 0), если вы соответствуете, или если совпадений нет, будет выведен ноль. Умножьте что-нибудь на ноль, и вы получите ноль, что позволяет выводить 1 или 0 для true / false в главном операторе If.


Если они должны быть из одной строки, вы можете сравнить 2 совпадения, которые зависят от переходного свойства (A = B, B = C, поэтому A = C):

=If(And(Match(A2,P:P,0)=Match(G2,M:M,0),Match(G2,M:M,0)=Match(H2,L:L,0)),1,0)

Edit1:

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

Поскольку это не пост с тегами VBA, это немного выше ожидаемого ответа ... Моя рекомендация:

  • A) Убедитесь, что вам удобно использовать VBA.

  • B) Сделайте сообщение о создании пользовательской функции (обратите внимание, что любой пост здесь о VBA имеет ожидание того, что автор может взаимодействовать с экспертом по этой теме и будет прилагая усилия для написания кода самостоятельно, поскольку StackOverflow не является службой кода для вас).

Чтобы помочь определить, что может быть в вашем UDF:

  • Цикл для прохода значений от первой строки до последней строки в столбце поиска (т. Е. L, M, & P)

  • Переменная для динамического определения последней строки вашего столбца поиска

  • Оператор if для сравнения значений из ваших значений поиска (то есть, A2, G2, H2) с значениями поиска на текущей итерации цикла

  • Выход 1 (соответствует) или 0 (нет соответствия).

Есть много способов сделать это с VBA; надеюсь, это хорошее начало для тебя, Ирина!

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