Excel Использование ссылки на ячейку в качестве логического оператора с несколькими критериями и поиск значения - PullRequest
0 голосов
/ 10 мая 2018

Не совсем уверен, как справиться с этим. Нужно заполнить выделенные ячейки (F15, F16, G15, G16) правильным кодом CMG на основе 2 правил. Правила находятся в верхней таблице в столбцах D: H. Каждое правило разделено на 3 столбца, указанная метрика, оператор и значение. Большинство правил проверяют моторную оценку, а некоторые проверяют возраст, а в некоторых случаях есть только 1 правило. После заполнения CMG в ячейках F15 и F16 мне нужно будет использовать этот код для поиска веса в столбцах I: L (что должно быть довольно простой задачей).

Предпочел бы выполнить это с помощью формулы вместо VBA. Есть идеи? Спасибо!

enter image description here

Обратите внимание, выделенные ячейки должны иметь следующие значения:

  • F15 = 202
  • F16 = 105
  • G15 = 1,2534
  • G16 = 1,9391

Этот вопрос очень похож на этот, но у меня есть 2 набора правил / критериев. Также мои правила могут переключаться между Motor, Age и (пусто). Excel использует ссылку на ячейку в качестве логического оператора и ищет значение

1 Ответ

0 голосов
/ 10 мая 2018

Используйте следующую формулу, чтобы получить нужную строку в таблице для «Боба», которую затем можно заполнить для «Стив» и т. Д. (Затем вы можете использовать этот результат в формуле INDEX, чтобы получить CMG и Вес). Обратите внимание, что вы должны зафиксировать его как формулу массива (ctrl + shift + enter).

=MATCH("TRUETRUETRUE",($A$2:$A$12=B15)&IF(LEN($C$2:$C$12)>0,CHOOSE(MATCH($C$2:$C$12,$C$14:$D$14,0),CHOOSE(MATCH($D$2:$D$12,{">",">=","<","<="},0),$C15>$E$2:$E$12,$C15>=$E$2:$E$12,$C15<$E$2:$E$12,$C15<=$E$2:$E$12),CHOOSE(MATCH($D$2:$D$12,{">",">=","<","<="},0),$D15>$E$2:$E$12,$D15>=$E$2:$E$12,$D15<$E$2:$E$12,$D15<=$E$2:$E$12)),TRUE)&IF(LEN($F$2:$F$12)>0,CHOOSE(MATCH($F$2:$F$12,$C$14:$D$14,0),CHOOSE(MATCH($G$2:$G$12,{">",">=","<","<="},0),$C15>$H$2:$H$12,$C15>=$H$2:$H$12,$C15<$H$2:$H$12,$C15<=$H$2:$H$12),CHOOSE(MATCH($G$2:$G$12,{">",">=","<","<="},0),$D15>$H$2:$H$12,$D15>=$H$2:$H$12,$D15<$H$2:$H$12,$D15<=$H$2:$H$12)),TRUE),0)

РЕДАКТИРОВАТЬ У Тома Шарпа есть хорошее предложение использовать COUNTIFS, что позволит вам напрямую использовать логические операторы. Это приводит к более короткой, более простой формуле (вам все еще нужно зафиксировать ее как формулу массива):

=MATCH(4,IF($C$2:$C$12=$C$14,COUNTIFS(B15,A$2:A$12,C15,D$2:D$12&E$2:E$12)>0,1)+IF($F$2:$F$12=$C$14,COUNTIFS(B15,A$2:A$12,C15,G$2:G$12&H$2:H$12)>0,1)+IF($C$2:$C$12=$D$14,COUNTIFS(B15,A$2:A$12,D15,D$2:D$12&E$2:E$12)>0,1)+IF($F$2:$F$12=$D$14,COUNTIFS(B15,A$2:A$12,D15,G$2:G$12&H$2:H$12)>0,1),0)

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

...