Использование обработки ошибок в формуле, которая состоит из нескольких частей - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь реализовать обработку ошибок как часть следующей формулы, чтобы учесть ячейки в каждом диапазоне, которые просто не имеют значения, и вернуть «#NUM!»ошибка:

{=SUMPRODUCT(R2:T2,U2:W2)/SUM(R2:T2)}

Пока что мне повезло, если при разделении основной формулы, приведенной выше, я использовал объединенные IF и ISNUMBER (как показано ниже), но я испытываю затруднения, когда дело доходит до реализации ее для каждой формулы.секция / диапазон ячеек.Моя попытка:

{=SUMPRODUCT(IF(ISNUMBER(R3:T3),R3:T3))}

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 01 марта 2019

Ваша оригинальная формула, без обработки ошибок, может быть введена как обычно.Это не требует Ctl + Shift + Enter.Также он не может выдавать ошибку #NUM, потому что функции SUM () и SUMPRODUCT () интерпретируют нечисловые значения как ноль.Поэтому, если вы получите ошибку #NUM, эта ошибка будет создана формулами в диапазоне R2: W2.Вы должны ввести обработку ошибок там, а не в формулу, которую мы здесь рассматриваем.

Формула здесь - это ваша первая, оригинальная формула - выдаст ошибку деления на ноль, если SUM (R2: T2) равеннуль.=IFERROR(SUMPRODUCT(R2:T2,U2:W2)/SUM(R2:T2),0) вернет ноль в случае такой ошибки.Вы можете изменить формулу на что-то вроде =IFERROR(SUMPRODUCT(R2:T2,U2:W2)/SUM(R2:T2),"ERROR"), если хотите.

Этот тип обработчика ошибок вступит в силу также, если необработанная ошибка унаследована от R2: W2.Я рекомендую обрабатывать ошибки там, где они возникают, но если вы хотите использовать более конкретный обработчик ошибок в формуле, которую мы здесь просматриваем, приведенная ниже формула пропустит импортированные ошибки #NUM и будет обрабатывать только ошибки #DIV BY ZERO, созданные по этой формуле.,=SUMPRODUCT(R3:T3,U3:W3)/IF(SUM(R3:T3),SUM(R3:T3),1) Эта формула делит результат функции SUMPRODUCT () на 1, если SUM (R3: T3) равно нулю.Это возвращает результат по формуле 0, потому что часть SUMPRODUCT будет возвращать ноль (если она не наследует ошибку #NUM).

...