#google-sheets #google-sheets-formula
#google-таблицы #google-sheets-формула
Вопрос:
У меня проблема со следующей формулой…
=IF(AND(D18<=72,G18="Defensive"),2000,IF(AND(D18<=74,G18="Defensive"),5000,IF(AND(D18=75,G18="Defensive"),10000,IF(AND(D18=76,G18="Defensive"),20000,IF(AND(D18=77,G18="Defensive"),40000,IF(AND(D18=78,G18="Defensive"),60000,IF(AND(D18=79,G18="Defensive"),70000,IF(AND(D18=80,G18="Defensive"),80000,IF(AND(D18=81,G18="Defensive"),90000,IF(AND(D18=82,G18="Defensive"),100000,IF(AND(D18=83,G18="Defensive"),110000,IF(AND(D18=84,G18="Defensive"),120000,IF(AND(D18=85,G18="Defensive"),140000,IF(AND(D18>=86,G18="Defensive"),160000,IF(AND(D18>=88,G18="Defensive",1800000,IF(AND(D18<=72,G18="Attacking"),2000,IF(AND(D18<=74,G18="Attacking"),5000,IF(AND(D18=75,G18="Attacking"),15000,IF(AND(D18=76,G18="Attacking"),25000,IF(AND(D18=77,G18="Attacking"),50000,IF(AND(D18=78,G18="Attacking"),70000,IF(AND(D18=79,G18="Attacking"),80000,IF(AND(D18=80,G18="Attacking"),85000,IF(AND(D18=81,G18="Attacking"),95000,IF(AND(D18=82,G18="Attacking"),110000,IF(AND(D18=83,G18="Attacking"),120000,IF(AND(D18=84,G18="Attacking"),135000,IF(AND(D18=85,G18="Attacking"),160000,IF(AND(D18>=86,G18="Attacking"),210000,IF(AND(D18>=88,G18="Attacking"),230000,0)))))))))))))))))))))))))))))))
Как только он достигает первого оператора IF И, который включает G18=»Attacking», я получаю ошибку неправильного числа аргументов, ожидая 2 или 3, но получая 1. Для меня это не имеет смысла, и я не вижу никаких проблем. Когда я тестирую только те, у которых G18=»Attacking» самостоятельно, все работает нормально.
Есть ли какие-то ограничения, о которых я не знаю?
Вот ссылка на то, где мы что-то тестируем
Спасибо
Ответ №1:
Здесь у вас опечатка:
AND(D18>=88,G18="Defensive",1800000,IF(
AND
Функция не принимает так много аргументов, поэтому сообщение об ошибке является тем, что оно есть. Вероятно, вы пропустили )
.
Как я это нашел, спросите вы. Я добавил новые строки после каждой (
и перед каждой )
(простой автоматический поиск-замена в Vim), затем использовал автоматический отступ в Vim. После этого в режиме без переноса вся цепочка выглядит как красивая лестница, из которой торчит только вышеупомянутая неисправная часть.
Ответ №2:
Попробуйте это, действительно, вы забыли скобку в одной из формул AND
s:
=IF(AND(D18<=72,G18="Defensive"),2000,IF(AND(D18<=74,G18="Defensive"),5000,IF(AND(D18=75,G18="Defensive"),10000,IF(AND(D18=76,G18="Defensive"),20000,IF(AND(D18=77,G18="Defensive"),40000,IF(AND(D18=78,G18="Defensive"),60000,IF(AND(D18=79,G18="Defensive"),70000,IF(AND(D18=80,G18="Defensive"),80000,IF(AND(D18=81,G18="Defensive"),90000,IF(AND(D18=82,G18="Defensive"),100000,IF(AND(D18=83,G18="Defensive"),110000,IF(AND(D18=84,G18="Defensive"),120000,IF(AND(D18=85,G18="Defensive"),140000,IF(AND(D18>=86,G18="Defensive"),160000,IF(AND(D18>=88,G18="Defensive"),1800000,IF(AND(D18<=72,G18="Attacking"),2000,IF(AND(D18<=74,G18="Attacking"),5000,IF(AND(D18=75,G18="Attacking"),15000,IF(AND(D18=76,G18="Attacking"),25000,IF(AND(D18=77,G18="Attacking"),50000,IF(AND(D18=78,G18="Attacking"),70000,IF(AND(D18=79,G18="Attacking"),80000,IF(AND(D18=80,G18="Attacking"),85000,IF(AND(D18=81,G18="Attacking"),95000,IF(AND(D18=82,G18="Attacking"),110000,IF(AND(D18=83,G18="Attacking"),120000,IF(AND(D18=84,G18="Attacking"),135000,IF(AND(D18=85,G18="Attacking"),160000,IF(AND(D18>=86,G18="Attacking"),210000,IF(AND(D18>=88,G18="Attacking"),230000,0))))))))))))))))))))))))))))))
Ответ №3:
Это тот случай, когда вам нужно хорошенько подумать о том, нет ли более простого способа добиться результата.
Например, вы могли бы создать таблицу поиска, а затем использовать очень простую формулу, которая позволила бы легко добавлять и отлаживать:
=LOOKUP(D2,$I$2:$I$16,INDEX($J$2:$K$16,0,(G2="Def") (G2="Att")*2))
Постскриптум
В вашей формуле есть условие, которое никогда не будет выполнено:
...IF(AND(D18>=86,G18="Defensive"),160000,IF(AND(D18>=88,G18="Defensive"),1800000...