Добавление условия в формулу SUM приводит к ошибке # N / A

1

Я пытаюсь суммировать диапазон на основе нескольких условий.

Когда я вхожу

=SUM(IF((INDIRECT("CommissionDetail!$Z$2:$Z$"&COUNT(CommissionDetail!$N:$N))<>0)*(INDIRECT("CommissionDetail!$Z$2:$Z$"&COUNT(CommissionDetail!$N:$N))<>""),INDIRECT("CommissionDetail!$AF$2:$AF$"&COUNT(CommissionDetail!$N:$N))/INDIRECT("CommissionDetail!$Z$2:$Z$"&COUNT(CommissionDetail!$N:$N)),0))

формула возвращает действительный результат.

Тем не менее, когда я добавляю условие

LEFT(INDIRECT("CommissionDetail!$AL$2:$AL$"&COUNTA(CommissionDetail!$N:$N)),SEARCH("(",INDIRECT("CommissionDetail!$AL$2:$AL$"&COUNTA(CommissionDetail!$N:$N)))-2)="As and When"

следующее:

=SUM(IF((LEFT(INDIRECT("CommissionDetail!$AL$2:$AL$"&COUNTA(CommissionDetail!$N:$N)),SEARCH("(",INDIRECT("CommissionDetail!$AL$2:$AL$"&COUNTA(CommissionDetail!$N:$N)))-2)="As and When")*(INDIRECT("CommissionDetail!$Z$2:$Z$"&COUNT(CommissionDetail!$N:$N))<>0)*(INDIRECT("CommissionDetail!$Z$2:$Z$"&COUNT(CommissionDetail!$N:$N))<>""),INDIRECT("CommissionDetail!$AF$2:$AF$"&COUNT(CommissionDetail!$N:$N))/INDIRECT("CommissionDetail!$Z$2:$Z$"&COUNT(CommissionDetail!$N:$N)),0))

тогда я получаю ошибку # N / A.

Даже когда я удаляю операцию деления, например

=SUM(IF((LEFT(INDIRECT("CommissionDetail!$AL$2:$AL$"&COUNTA(CommissionDetail!$N:$N)),SEARCH("(",INDIRECT("CommissionDetail!$AL$2:$AL$"&COUNTA(CommissionDetail!$N:$N)))-2)="As and When")*(INDIRECT("CommissionDetail!$Z$2:$Z$"&COUNT(CommissionDetail!$N:$N))<>0)*(INDIRECT("CommissionDetail!$Z$2:$Z$"&COUNT(CommissionDetail!$N:$N))<>""),INDIRECT("CommissionDetail!$AF$2:$AF$"&COUNT(CommissionDetail!$N:$N)),0))

Я все еще получаю ошибку # N / A.

Когда я делаю подсчет в столбце Z следующим образом:

=COUNT(IF((LEFT(INDIRECT("CommissionDetail!$AL$2:$AL$"&COUNTA(CommissionDetail!$N:$N)),SEARCH("(",INDIRECT("CommissionDetail!$AL$2:$AL$"&COUNTA(CommissionDetail!$N:$N)))-2)="As and When")*(INDIRECT("CommissionDetail!$Z$2:$Z$"&COUNT(CommissionDetail!$N:$N))<>0)*(INDIRECT("CommissionDetail!$Z$2:$Z$"&COUNT(CommissionDetail!$N:$N))<>""),INDIRECT("CommissionDetail!$Z$2:$Z$"&COUNT(CommissionDetail!$N:$N))))

Я получаю действительный результат, поэтому я знаю, что есть, по крайней мере, некоторые ячейки, которые удовлетворяют условию, которое я упомянул выше.

Почему тогда я получаю ошибку # N / A при суммировании?

Я особенно заинтересован в понимании того, почему формула перестает быть действительной после добавления условия, которое выполняется по крайней мере более одного раза и работает в формуле COUNT.

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

Есть идеи?

Aaa
источник

Ответы:

2

В первой формуле вы использовали COUNT, т.е.

COUNT(CommissionDetail!$N:$N)

но в дополнительной части вы использовали COUNTA, т.е.

COUNTA(CommissionDetail!$N:$N)

Если в столбце N есть какие-либо текстовые значения (например, строка заголовка), то они не будут давать одинаковое число (следовательно, ошибка # N / A), поскольку COUNT считает только числа, COUNTA подсчитывает все записи.

Я предлагаю вам перейти на COUNTA, потому что использование COUNT будет игнорировать последнюю строку, если у вас есть строка заголовка

Вы также можете немного упростить, не думайте, что вам SEARCH часть в новом состоянии, почему бы просто не искать ячейки, которые начинаются с Как и в случае ( ..... и вы могли бы использовать IFERROR вместо того, чтобы проверять наличие пробелов или нулей в качестве делителей, т. е. включая новое условие (и COUNTA во всем, как предлагается), которое будет:

=SUM(IFERROR(IF(LEFT(INDIRECT("CommissionDetail!$AL$2:$AL$"&COUNTA(CommissionDetail!$N:$N)),13)="As and When (",INDIRECT("CommissionDetail!$AF$2:$AF$"&COUNTA(CommissionDetail!$N:$N))/ INDIRECT("CommissionDetail!$Z$2:$Z$"&COUNTA(CommissionDetail!$N:$N))),0))

подтверждено CTRL + СДВИГ + ВОЙТИ

.... и дальнейшее усовершенствование, чтобы сделать формулу более читабельной, состоит в определении вашего повторяющегося элемента, т.е.

=COUNTA(CommissionDetail!$N:$N)

в качестве именованного диапазона, например RowCount и тогда формула снова становится короче, т.е.

=SUM(IFERROR(IF(LEFT(INDIRECT("CommissionDetail!$AL$2:$AL$"&RowCount),13)="As and When (",INDIRECT("CommissionDetail!$AF$2:$AF$"&RowCount)/ INDIRECT("CommissionDetail!$Z$2:$Z$"&RowCount)),0))

barry houdini
источник
Спасибо, что указали на ошибку COUNT vs. COUNTA - это определенно было причиной моей конкретной ошибки, поскольку это привело к несоответствию между диапазонами.
Aaa
Спасибо за указание на более короткий метод определения типов комиссионных - иногда требуется новый набор глазных яблок, чтобы обнаружить подобные недостатки. Я пытаюсь отказаться от использования именованных диапазонов, поскольку не хочу инструктировать пользователя о том, чтобы имена оставались неизменными после копирования / вставки или копирования целых рабочих книг, но спасибо за предложение. Я избегал IFERROR (..., 0), так как работал с формулой AVERAGE, на которую повлиял бы ее результат.
Aaa
Я не думаю, что использование IFERROR (..., 0) в этой формуле вызовет проблемы, потому что вы суммируете, поэтому ноль не имеет значения для результата - если вы усредняете, вы можете изменить на IFERROR (...., " ") и текстовое значение" "будет игнорироваться .....
barry houdini