Excel - Почему функция SUMPRODUCT () возвращает # ЗНАЧЕНИЕ! когда я использую диапазон или именованный диапазон, а не константу массива? - PullRequest
0 голосов
/ 19 февраля 2012

У меня есть проблема в Excel, которую я не могу решить:

Я использую функцию SUMPRODUCT () для расчета комиссии по скользящей шкале. Я понял основы этого, прочитав эту страницу: http://www.mcgimpsey.com/excel/variablerate.html в котором говорится, что я могу составить комиссию так:

=SUMPRODUCT(--(A1>$J$2:$J$5), (A1-$J$2:$J$5), $L$2:$L$5)

Где A1 - это сумма брутто, J2: J5 - диапазон порогов, а L2: L5 - различные ставки комиссионного вознаграждения для этих порогов.

У меня есть формула, работающая на одном тестовом примере, но когда я пытаюсь выделить переменные в ссылки на ячейки и диапазоны, она завершается неудачно и возвращает #VALUE!

например. Сбой, когда я использую следующую формулу:

=SUMPRODUCT(--(C17>$C7:$E7),(C17-$C7:$E7),commissionPercentages)

или

=SUMPRODUCT(--(D17>$C7:$E7),(D17-$C7:$E7), R11:R13 )

каждая из которых относится к трем соседним ячейкам, содержащим проценты.

Однако, если я жестко закодирую проценты как константу массива:

=SUMPRODUCT(--(C17>$C7:$E7),(C17-$C7:$E7),{0.05,0.05,0.1})

Тогда это работает ...

Это также работает в моем тестовом примере, где все аргументы имеют именованные ссылки:

=SUMPRODUCT(--(testRevenueAmount>thresholds),(testRevenueAmount-thresholds),commissionPercentages)

Я не понимаю, почему это происходит, и что я сделал неправильно.

Может ли кто-нибудь просветить меня?

Здесь есть упрощенная версия моей электронной таблицы, если вы хотите увидеть, что я пытаюсь сделать.

http://diggory.net/Grazing/CommissionSample.xlsx

Спасибо.

Ответы [ 2 ]

3 голосов
/ 20 февраля 2012

Вы также можете использовать функцию MMULT, чтобы избежать "записи массива", то есть

=MMULT((C17>$C7:$E7)*(C17-$C7:$E7),commissionPercentages)

1 голос
/ 19 февраля 2012

Как вы прокомментировали, проблема заключается в различных ориентациях.

Вы можете обойти эту проблему, добавив Transpose к своей формуле

=SUMPRODUCT(--(C17>$C7:$E7),(C17-$C7:$E7),TRANSPOSE(commissionPercentages))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...