Использование IF и оператора в MS Excel приводит к ошибке аргумента

#excel #excel-formula

#excel #excel-формула

Вопрос:

Я пытался заставить эту формулу работать, используя операторы IF и AND в Excel. Однако я продолжаю получать ошибку слишком много аргументов. Я проверил наличие открытых и закрытых фигурных скобок. Может кто-нибудь исправить формулу, если что-то не так.

Однострочная версия

 =IF(AND(F2>=190, F2<=194),30,0,IF(AND(F2>=196, F2<=200),30,0,IF(AND(F2>=185, F2<=189),20,0,IF(AND(F2>=201, F2<=205),20,0,IF(AND(F2>=175, F2<=184),10,0,IF(AND(F2>=206, F2<=215),10,0, IF(EXACT(F2,Sheet2!$A4),50,0)))))))
  

Многострочная версия

 =IF(
    AND(F2>=190, F2<=194),
    30,
    0,
    IF(
        AND(F2>=196, F2<=200),
        30,
        0,
        IF(
            AND(F2>=185, F2<=189),
            20,
            0,
            IF(
                AND(F2>=201, F2<=205),
                20,
                0,
                IF(
                    AND(F2>=175, F2<=184),
                    10,
                    0,
                    IF(
                        AND(F2>=206, F2<=215),
                        10,
                        0,
                        IF(
                            EXACT(F2, Sheet2!$A4),
                            50,
                            0)
                        )
                    )
                )
            )
        )
    )
  

Комментарии:

1. У вас слишком много аргументов в вашем IF s, вам нужно удалить все, кроме последнего ,0

2. Кстати, более простая формула: =CHOOSE(MATCH(F2,{0,175,185,190,195,196,201,206,216}),0,10,20,30,50,30,20,10,0)

3. на самом деле используйте: =CHOOSE(MATCH(ABS(195-A1),{0,1,6,11,21}),50,30,20,10,0)

4. @IlikeExcelverymuch это просто короче и лаконичнее с шаблоном.

5. Продолжайте. Эмпирическое правило для меня таково: если я сделаю это комментарием, если вы укажете, где вы его получили, вы можете включить его в ответ. @IlikeExcelverymuch

Ответ №1:

Похоже, вы пытаетесь сказать: «Если это находится между этими двумя числами, то это, в противном случае, если это находится между этими двумя числами, то это ….»

На самом деле вы сказали: «Если это находится между этими двумя числами, то это, в противном случае 0 и в то же время, если это находится между этими двумя числами, то это ….»

В принципе, вам нужно либо:

  1. Замените каждый экземпляр «, 0,» просто «,» (например, так) =IF(AND(F2>=190, F2<=194),30,IF(AND(F2>=196, F2<=200),30,IF(AND(F2>=185, F2<=189),20,IF(AND(F2>=201, F2<=205),20,IF(AND(F2>=175, F2<=184),10,IF(AND(F2>=206, F2<=215),10, IF(EXACT(F2,Sheet2!$A4),50,0)))))))

или

  1. Разбейте их на отдельные функции IF() и добавьте их вместе (например, так) =IF(AND(F2>=190,F2<=194),30,0) IF(AND(F2>=196,F2<=200),30,0) IF(AND(F2>=185,F2<=189),20,0) IF(AND(F2>=201,F2<=205),20,0) IF(AND(F2>=175,F2<=184),10,0) IF(AND(F2>=206,F2<=215),10,0) IF(EXACT(F2,Sheet2!$A4),50,0)

Обновлено, чтобы включить решение, сделанное @Scott Craner

  1. =CHOOSE(MATCH(ABS(195-F2),{0,1,6,11,21}),50,30,20,10,0)

Match() возвращает число, соответствующее месту, где значение встречается в диапазоне (поэтому 1-е равно 1, 2-е равно 2 и т. Д.). Если это число отсутствует, то оно возвращает наибольшее число, которое меньше значения, ВЫБЕРИТЕ () делает противоположное MATCH(), ононаходит и возвращает значение, соответствующее диапазону, просматривая, где оно встречается (если у вас есть диапазон {«a», «b»,»c»} и запрашивается 3-й, он вернет «C».

ABS() превращает отрицательные значения в положительные и оставляет положительные значения неизменными.