2014-02-07 5 views
0

Учитывая следующий Excel лист:SUMPRODUCT принуждении в Excel

A1 = 10 
A2 = 20 
A3 = 30 

Я знаю/понимаю, почему SUMPRODUCT(0+(A1:A3>0)) возвращает 3 (3 булевы значения принуждают в к целым числам из-за того).

Почему SUMPRODUCT(1+(A1:A3>0)) возвращение 6? (И увеличивая константу дает нам результат Constant * N + N.

Является ли это документированная особенность Excel, или просто какой-то странно странность, что я наткнулся?

Ради ясности, эти формулы не являются формулами массива, и Im с помощью Excel 2003.

+1

Что вы _expect_ его вернуть, если не '6'? –

+0

Как злоупотребление порядком операций, я полагаю, можно было бы ожидать «1 + (сумма значений массива) = 4', но ответ Барри объясняет, почему это не так. Сложение применяется к каждому члену массива до того, как они будут суммированы. –

+0

... и, конечно, «нормальное» использование SUMPRODUCT в соответствии с первой формулой - = SUMPRODUCT (0+ (A1: A3> 0)) не будет работать так, как ожидалось, если это ** не было ** случай Нуль необходимо добавить к каждому значению в массиве, чтобы соединить каждое значение в массиве ..... –

ответ

4

эта формула возвращает 6, потому что в вашем примере A1: A3 все> 0 так A1: A3> 0 возвращает этот массив

{TRUE;TRUE;TRUE} и когда вы делаете какой-то расчет по TRUE/FALSE значениям TRUE становится 1 и FALSE становится равным нулю, так с

1+{TRUE;TRUE;TRUE}

вы получите

{2;2;2}

который SUMPRODUCT суммы, чтобы получить 6

вы получите тот же результат с SUM но "введен массив", т.е.

=SUM(1+(A1:A3>0))

подтвердил CTRL+SHIFT+ENTER

логика и результат такой же, как в

константу 1 всегда добавляется к каждому элементу в массиве - такого рода «массива математике» является стандартом в первенствует

+0

А, получилось - я думал, что массив {T; T; T} оценивается как группа , не рассматривая константу как множитель массива. Большое спасибо! К сожалению, я пока не могу ответить на ваш ответ, но вернусь, как только у меня появятся ответы. – user2591854

Смежные вопросы