Excel проверяет, найдено ли каждое вхождение в списке - PullRequest
0 голосов
/ 09 января 2019

У меня есть список тестов в файле Excel

List of Tests
   Test A
   Test B
   Test C
   Test D

В другом файле у меня есть список идентификаторов и какие тесты связаны с идентификатором

ID  Test
25  Test A
25  Test B
25  Test B
25  Test C
25  Test D
26  Test A
26  Test B
26  Test C
26  Test D
27  Test A
27  Test A
27  Test B
27  Test C
28  Test A
28  Test B
28  Test C
28  Test D

Мне нужно создать поиск, который проверяет, имеет ли идентификатор КАЖДЫЙ тест в списке, и возвращает 1, если истина, в противном случае 0.

ID  Result
25  1
26  1
27  0
28  1
29  0

Я пытался

=SUMPRODUCT( -- ISNUMBER(SEARCH(List,IDs)))=COUNTA(List) но это вернет True, если какое-либо совпадение будет найдено.

Ответы [ 3 ]

0 голосов
/ 10 января 2019

Вот мое решение (правда, я не очень хорош в формулах массива, так что ...):

enter image description here

Введено в G25 с помощью Ctrl + Shift + Enter и заполнено

0 голосов
/ 10 января 2019

Предполагая настройку данных, подобную этой:

enter image description here

В ячейке G2 скопирована эта формула массива :

=--AND(COUNTIFS(A:A,F2,B:B,$D$2:$D$5)>0)

Формулы массива должны быть подтверждены с помощью Ctrl Shift Введите вместо Введите .

Объяснение формулы:

Формулы массивов рассчитывают аргументы индивидуально, а не коллективно. Таким образом, в этом случае выполняется проверка, чтобы проверить, является ли столбец A = [ID] (F2) И если столбец B является КАЖДЫМ из списка тестов (D2, D3, D4 и D5). Он проверяет каждую из ячеек D в отдельности, а затем возвращает массив (именно поэтому их называют формулами массива) результатов. Если все тесты существуют, то вы получите {TRUE, TRUE, TRUE, TRUE} и оператор AND вернет TRUE. Если какого-либо из тестов не существует (например, идентификатор 27 вернет {TRUE, TRUE, TRUE, FALSE}, поскольку тест D не существует для идентификатора 27), тогда оператор AND увидит false и вернет результат FALSE. Символ - (который можно прочитать как минус отрицательный, он официально называется двойным унарным символом и используется для преобразования нечисловых значений в числа) преобразует результат TRUE / FALSE из оператора AND в 1/0 соответственно.

0 голосов
/ 10 января 2019

Не самое элегантное решение, но оно работает:

=IF(AND(COUNTIFS(A$2:A$18,G2,B$2:B$18,K$2)>0,COUNTIFS(A$2:A$18,G2,B$2:B$18,K$3)>0,COUNTIFS(A$2:A$18,G2,B$2:B$18,K$4)>0,COUNTIFS(A$2:A$18,G2,B$2:B$18,K$5)>0),1,0)

И заселить вниз

Column A содержит идентификаторы (ваша вторая таблица) Column B содержит тесты (ваша вторая таблица) Column G содержит список уникальных идентификаторов (ваша третья таблица) Column H содержит формулу выше Column K содержит список тестов (ваша первая таблица)

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