Вложенные IF в индексном поиске для поиска значения - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь написать формулу, работающую подобно совпадению индекса, чтобы получить стоимость в столбце AB.

Идея в том, что я хотел бы, чтобы формула проходила через все три параметра, как в логическом дереве.Примечание: параметры меняются в моих разных файлах, поэтому я хотел бы избежать любых жестко закодированных имен, таких как (IF x = " CV " или " CH ", в противном случае "*").

Пример:

Q1, что такое параметр 1?У меня есть выбор между AAA, BBB, CCC и *.Я хочу BBB.Поскольку BBB указан, перейдите к BBB.

Q2, что такое параметр 2?У меня есть выбор между CH, CP, CU и *.Я хочу резюме.Поскольку CV отсутствует в списке, перейдите к *.

Q3, что такое параметр 3?У меня есть выбор ... (см. Выше)

Q4, что такое параметр 4?Если название моего продукта (столбец X) содержит это значение в своем имени, воспользуйтесь им.В противном случае перейдите к *.

Q5, что такое параметр 5?Если название моего продукта ... (см. Выше)

Надеюсь, я объяснил это ясно.Если нет, то есть скриншот, чтобы показать, что я имел в виду.

По сути, я пробовал что-то вроде

{ = index(x,match(1,(p1),(p2),(p3)...),0)} 

с некоторыми вложенными формулами if, но, к сожалению, я не смог этого сделать.

enter image description here

1 Ответ

0 голосов
/ 25 сентября 2019

Предположим, у вас есть следующие именованные диапазоны :

  • Col_P1 - диапазон данных параметра 1;
  • Col_P2 - диапазон данных параметра 2;
  • Col_P3 - диапазон данных параметра 3;
  • Col_P4 - диапазон данных параметра 4;
  • Col_P5 - диапазон данных параметра 5;
  • Col_Cost - диапазон данных всех расходов;

Named Ranges

Solution

Формула, которую вы вводите в ячейку L2:

{=SUMPRODUCT(IF((Col_P1=I2),(Col_P1=I2),(Col_P1="*"))*IF((Col_P2=J2),(Col_P2=J2),(Col_P2="*"))*IF((Col_P3=K2),(Col_P3=K2),(Col_P3="*"))*IF(ISNUMBER(FIND(Col_P4,H2)),ISNUMBER(FIND(Col_P4,H2)),(Col_P4="*"))*IF(ISNUMBER(FIND(Col_P5,H2)),ISNUMBER(FIND(Col_P5,H2)),(Col_P5="*"))*Col_Cost)}

Это формула массива , которую необходимо подтвердить, нажав Ctrl + Shift + Введите в строке формул.

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

Такздесь потенциальная проблема, , еслипо вашим критериям возвращается несколько совпадений, стоимость будет равна сумме всех совпадений .

Последствия зависят от ваших предпочтений.Если для нескольких совпадений вы хотите вернуть среднюю стоимость , вы можете разделить результат из вышеприведенной формулы на результат из следующей формулы массива:

{=SUMPRODUCT(IF((Col_P1=I2),(Col_P1=I2),(Col_P1="*"))*IF((Col_P2=J2),(Col_P2=J2),(Col_P2="*"))*IF((Col_P3=K2),(Col_P3=K2),(Col_P3="*"))*IF(ISNUMBER(FIND(Col_P4,H2)),ISNUMBER(FIND(Col_P4,H2)),(Col_P4="*"))*IF(ISNUMBER(FIND(Col_P5,H2)),ISNUMBER(FIND(Col_P5,H2)),(Col_P5="*")))}

, что составляет 90%аналогично первой формуле, но без последнего массива Col_Cost.

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

Приветствия:)

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