Excel вложенный, если условие - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь записать вложенное условие if, используя AND, OR, MIN, MAX внутри условия IF. но я не мог решить эту проблему ниже.

У меня есть столбец с платежами, если этот платеж меньше 20 КБ, то он должен занять 100% от суммы платежа.

Если размер платежа составляет 20–40 тыс., Необходимо рассчитать 80% платежа, но после расчета 80% результат составляет менее 20 тыс., Тогда следует написать 20 тыс. если результат больше, он должен записать результат.

, если платеж находится между 40k - 75k, тогда нужно рассчитать 70% платежа, но после расчета 70% результат будет меньше 40k, тогда он должен записать 40k. если результат больше, он должен записать результат.

, если платеж находится между 75k - 100k, тогда нужно рассчитать 60% платежа, но после вычисления 60% результат будет меньше 75k, тогда он должен записать 75k. если результат больше, он должен записать результат.

, если платеж больше, чем 100 000, нужно рассчитать 50% платежа, но после расчета 50% результат будет меньше 100 000, тогда он должен написать 100 000. если результат больше, он должен записать результат.

Я пытался написать вложенное условие if для формирования одной формулы с использованием функции min и оператора AND, но ничего не дает точного результата.

У меня есть пробовал:

=IF(B8<=20000,B8,IF(AND(B8>=20001,B8*80%<20000),20000,B8*80%),IF(AND(B8>=40001,B8*70%<40000),40000,B8*70%),IF(AND(B8>=75001,B8*60%<75000),75000,B8*60%),IF(AND(B8>=100001,B8*50%<100000),100000,B8*50%)

но выдает ошибку called too many arguments.

Ответы [ 3 ]

0 голосов
/ 09 апреля 2020

попробуйте это, здесь F2 - ячейка с введенным вами количеством

=MAX(LOOKUP((1-LOOKUP(F2,{0,20000,40000,75000,100000},{1,0.8,0.7,0.6,0.5}))*F2,{0,20000,40000,75000,100000},{20000,40000,75000,100000,0}),(1-LOOKUP(F2,{0,20000,40000,75000,100000},{1,0.8,0.7,0.6,0.5}))*F2)
0 голосов
/ 09 апреля 2020

Пожалуйста, попробуйте эту формулу. C2 - это ячейка с суммой платежа.

=MIN(C2,C2*INDEX({1,0.8,0.7,0.6,0.5},MATCH(C2/1000,{0,20,40,75,100},1)))

Преимущество использования INDEX / MATCH состоит в том, что она не является изменчивой.

0 голосов
/ 09 апреля 2020

Кажется, это работает:

=IF(B8 <= 20000,B8,IF(B8 <= 40000,MAX(20000,0.8*B8),IF(B8 <= 75000,MAX(40000,0.7*B8),IF(B8 <= 100000,MAX(75000,0.6*B8),MAX(100000,0.5*B8)))))

Сначала я написал это в блокноте следующим образом:

if(B8 <= 20000,
  B8,
  if(B8 <= 40000,
    max(20000,0.8*B8),
    if(B8 <= 75000,
      max(40000,0.7*B8),
      if(B8 <= 100000,
        max(75000,0.6*B8),
        max(100000,0.5*B8)
      )
    )
  )
)

, так как его раскладывание было единственным способом сохранить logi c прямо.

Ключевым моментом является то, что вы проверяете только, если B8 <= 40000 в контексте, в котором вы знаете, что B8 <= 20000 является ложным, поэтому вам не нужно проверять, если у вас также есть B8 > 20000. На этом этапе это автомат c.

...