Повышение эффективности Excel IF IF и Statement - PullRequest
0 голосов
/ 04 июня 2018

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

Я пытаюсь написать вложенный оператор IF с AND с помощьюследующие условия:

Order 1-10 and TRUE = 3*1.2
Order 1-10 and FALSE = 3
Order 11-20 and TRUE = 2*1.2
Order 11-20 and FALSE = 2
Order 21 or more and TRUE = 1*1.2
Order 21 or more and FALSE = 1

До сих пор у меня есть формула, которая работает, но менее элегантна, где B1 - объем заказа, B2 - существующий клиент, а E1 / F2 / F3 - цены.

=IF(AND(B1<11,B2=TRUE),E1*1.2,IF(AND(B1<11,B2=FALSE),E1,IF(AND(B1<21,B2=TRUE),F1*1.2,IF(AND(B1<21,B2=FALSE),F1,IF(AND(B1>=21,B2=TRUE),G1*1.2,G1)))))

Есть ли способ сделать эту формулу более короткой / эффективной?

1 Ответ

0 голосов
/ 05 июня 2018

Вы можете выделить его немного как:

=If(B2, 1.2, 1)*If(AND(B1>=1, B1<=10), 3, If(And(B1>=11,B1<=20), 2, 1))

Если вы преобразуете это в математику, вы можете просто сделать:

=If(B2, 1.2, 1)*ROUND(30/CEILING(B1, 10), 0)

Или:

=(1+B2*0.2)*ROUND(30/CEILING(B1, 10), 0)

Это немного глупо.


Обновлено для E1 / F2 / F3.Я не уловил это в первый раз.Я думаю, что следующим будет способ (своего рода сочетание варианта 1 и варианта 3 выше).

=(1+B2*0.2)*If(B1<=10),E1,If(B1<=20), F2, F3))

Я думаю, что наибольшим выигрышем является отделение логики для определения вашего множителя (1.2 против 1 в зависимости от B1) и логики для определения цены (ваш оператор Ifи E1 / F2 / F3)

...