Найти совпадения в результате формулы массива Excel - PullRequest
0 голосов
/ 31 октября 2018

Я ищу способ сделать какой-то вложенный / косвенный поиск.

  1. У меня есть таблица из двух столбцов с моделями автомобилей (например, Mustang) в столбце A и их марками (например, Ford) в столбце B
  2. В колонке F у меня есть список моделей автомобилей. Это могут быть модели, перечисленные в столбце A, но не все модели столбца A должны быть указаны в F
  3. В столбце D содержатся марки автомобилей.

Для каждой марки автомобиля в столбце D мне нужно определить, существует ли модель, указанная в столбце F. Поэтому, учитывая марку автомобиля в a из D, я хочу посмотреть соответствующие модели ухода в столбце B и затем я хотите найти случаи появления этих моделей ухода в столбце F.

Мне удалось выполнить первый поиск, используя формулу массива, однако я застрял на том, как определить, имеют ли результирующий массив и диапазон в F общие элементы (или непустое пересечение).

Любая помощь будет оценена!

henkgijsbert

A (Модель) B (Марка) C (пусто) D (= Марка2) E (= Найдено) F (= Карлист)

Корвет Шевроле Додж (1)? Corvette
Camaro Chevrolet Chevrolet (2)? Mustang
Мондео Форд Camaro
Мустанг Форд
Челленджер Додж
Мститель Додж

В приведенном выше примере для (1) результат должен быть равен N, поскольку в столбце F модели D1 («Уклонение») отсутствуют модели. На (2) результат должен быть Y, потому что в столбце F модели D2 («Chevrolet») есть модели (даже 2).

У меня есть следующая матрица формул, которая получает все модели для "Dodge" в D1:

{=IFERROR(INDEX($A$1:$A$6; SMALL(IF(D1=$B$1:$B$6; ROW($A$1:$A$6);""); ROW()));"")}

Как сравнить результат этой формулы массива с совпадениями в столбце F?

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

Если вы не хотите искать make в столбце G, вы можете использовать эту формулу:

=IF(0<SUM(MMULT(--(TRANSPOSE($A$2:$A$7)=$F$2:$F$3),--($B$2:$B$7=$D2))),"Y","N")

Но я бы порекомендовал создать в G столбец Make2, который будет гораздо легче понять позже.

0 голосов
/ 31 октября 2018

Другой вариант.

Используйте текущую формулу массива и вложите ее в операторы COUNTIF и IF.

{=IF(COUNTIF($F$1:$F$3;IFERROR(INDEX($A$1:$A$6; SMALL(IF(D1=$B$1:$B$6; ROW($A$1:$A$6);""); ROW()));""))>0;"Y";"N")}

COUNTIF подсчитывает, сколько раз ваша оригинальная формула найдет какое-либо значение в списке.

COUNTIF($F$1:$F$3;IFERROR(INDEX($A$1:$A$6; SMALL(IF(D1=$B$1:$B$6; ROW($A$1:$A$6);""); ROW()));""))>0

Если результат больше 0 (найдено хотя бы одно совпадение), верните yes по формуле IF:

IF(logic expression>0; "Y"; "N").
0 голосов
/ 31 октября 2018

Вы можете ввести следующее в E3 и перетащить вниз. Введите формулу с помощью Ctrl + Shift + Введите , т.е. как формулу массива.

 =IF(SUMPRODUCT(--ISNUMBER(MATCH($F$3:$F$5,IF(ISNUMBER(SEARCH($D3,$B$3:$B$8)),$A$3:$A$8,""),0)))>0,"Y","N")

Данные:

enter image description here

...