質問: sumproduct関数について excelで=sumproduct(a1:f1*(mod(column(a1:f1),2)=1))という式をieで検索し使用していますが、なかなか意味がわかりません。 (mod(column(a1:f1),2)=1)というところは、列を番号として2で割ったときに1余る列番号を求めているのはわかるのですが、 =sumproduct(a1:f1*というところが、なぜa1:f1を掛けているのか、どうしてそれで正常な奇数列の和が返ってくるのかがなかなか理解できません。どなたかわかりやすく教えていただけないでしょうか?
回答: まず、ヘルプで sumproduct関数を調べてみましょう。 そこには、「引数として指定した配列の対応する要素間の積をまず計算し、 さらにその和を返します。」とあります。 ↓の式の「引数として指定した配列」は1配列です。(引数が1つより無い) =sumproduct(a1:f1*(mod(column(a1:f1),2)=1)) の (mod(column(a1:f1),2)=1)部分は、括弧で括られていることに注目してください。 これは、論理式でa1:f1の範囲で列番号を2で割って残りが1の時、つまり奇数列の とき、真(true)になり、1の値を持っています。 また、偶数列の場合は、論理式は偽(false)になり、0 の値を持っています。 そこで配列が1つですから、「要素間の積」は無く、a1:f1の各値に0か1を掛けた ものの和ということになります。 例えば、今、a1~f1に1~6の数字が入っているとします。 そうすると =sumproduct(a1:f1*論理式)の部分は、 1*1 + 2*0 + 3*1 + 4*0 + 5*1 + 6*0 ということになり、9 が返ります。 掛け算の最初の数字は、セルの値で後の数字は、論理式の値です。 6個の * が疑問に思っていたのではないでしょうか。 ということで、sumproduct関数は、論理式と組み合わせて使うと複数条件のカウント や加算する場合に大変便利な関数です。 このような説明でお解りでしょうか。