Объединение нескольких IF-операторов в одну формулу - PullRequest
0 голосов
/ 07 мая 2019

Я создаю формулу, которая будет действовать как дополнительная «контрольная ячейка» для моего листа Excel.

Операторы if в тексте с ожидаемым результатом:

Если D2 = 0 и E2 = 0 и F2 = 0 => ""

Если D2 = 0 и E2> 0 и F2 = 0 => "м м2"

Если D2> 0 и E2> 0 и F2 = 0 => "м2 м3"

Если D2> 0 и E2> 0 и F2> 0 => «м3»

Если D2> 0 и E2 = 0 и F2> 0 => «м2»

Если D2 = 0 и E2> 0 и F2> 0 => "м2 м3"

Если D2 = 0 и E2 = 0 и F2> 0 => "m"

Если D2> 0 и E2 = 0 и F2 = 0 => "m"

Позже я перевожу эту формулу в vba, но мои знания по vba довольно ограничены, поэтому я хотел бы начать с формулы Excel.

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

* edit: до сих пор формула всегда возвращала «m3», поэтому она действует так, как будто все ячейки> 0, даже если они пусты / имеют значение 0.

Формула до сих пор (это так по-голландски = если)

=ALS(D3=0&E3=0&F3=0;"";ALS(D3=0&E3>0&F3=0;"m of m2";ALS(D3>0&E3>0&F3=0;"m2 of m3";ALS(D3>0&E3>0&F3>0;"m3";ALS(D3>0&E3=0&F3>0;"m2";ALS(D3=0&E3>0&F3>0;"m2 of m3";ALS(D3=0&E3=0&F3>0;"m";ALS(D3>0&E3=0&F3=0;"m";""))))))))```

1 Ответ

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

Один из способов интерпретации вашей таблицы результатов состоит в том, что значение равно 0 или нет. Ваша таблица не охватывает вероятность того, что значения будут меньше 0. При таком понимании одной из возможных функций NESTED IF будет:

=IF(D2=0,IF(E2=0,IF(F2=0,"","m"),IF(F2=0,"m of m2","m2 of m3")),IF(E2=0,IF(F2=0,"m","m2"),IF(F2=0,"m2 of m3","m3")))

В качестве альтернативы в Excel вы можете использовать функцию ВЫБРАТЬ. Поскольку каждый результат уникален и основан на двоичных результатах, вы можете использовать следующую формулу для генерации номера индекса от 1 до 8:

1+(F2>0)+(E2>0)*2+(D2>0)*4

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

=CHOOSE(1+(F2>0)+(E2>0)*2+(D2>0)*4,"","m","m of m2","m2 of m3","m","m2","m2 of m3","m3")

POC

теперь тоже не гуру VBA, я не уверен, как CHOOSE будет переводить на VBA. Но это был бы другой вопрос!

ОБНОВЛЕНИЕ: ИЗМЕНЕНИЕ, ЕСЛИ функция

=IF(AND(D2=0,E2=0,F2=0),"",IF(AND(E2=0,D2<>F2),"m",IF(AND(D2=0,E2>0,F2=0),"m of m2",IF(AND(E2>0,D2<>F2),"m2 of m3",IF(AND(D2>0,E2=0,F2>0),"m2","m3")))))

Есть много способов пройти через логику. В этом случае мне удалось сгруппировать функции ПЧ по результатам.

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