Предотвратить Excel от оценки ненужных выражений в OR () - PullRequest
1 голос
/ 29 апреля 2010
IF(OR(ISNA(MATCH(8,B10:B17,0)),MATCH(8,B10:B17,0)>8),"",...BLAH...)

Я понимаю, как решить эту проблему, переставив мою формулу. Я так понимаю, чтобы показать это. Вы можете увидеть, как оператор OR () проверяет, возвращает ли первый MATCH () NA. Когда это происходит, OR () должен автоматически возвращать TRUE и не оценивать второй MATCH (), потому что были выполнены условия для OR () для возврата true независимо от того, какие есть другие аргументы. Вы заметите, что первая и вторая функции MATCH () делают одно и то же. Происходит то, что вся функция возвращает NA, потому что второй MATCH () выполняется, хотя это и не обязательно, OR () удовлетворен одной ИСТИНОЙ, поэтому функция должна возвращать "".

Это ошибка или это преднамеренно?

Ответы [ 2 ]

4 голосов
/ 29 апреля 2010

В формулах Excel ИЛИ не выполняет оценку короткого замыкания (как и И), а если ИФ. Я предполагаю, что это было сделано намеренно, потому что так было всегда.

0 голосов
/ 29 апреля 2010

Чтобы расширить то, что сказал Чарльз, ИЛИ и И нельзя замкнуть из-за того, что они есть. Формула оценивает все входные данные, чтобы получить результат. При этом вы, вероятно, могли бы написать UDF, который бы выполнял то, что вы просите.

...