重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

 ExcelでSUMPRODUCT関数を条件付きの合計を求めるのによく使っていますが、理解できない動作があります。
 仮にA,B,Cが配列、b,cが定数として、A=aかつB=bの場合のCの合計を求めるものとします。

<式1>SUMPRODUCT((A=a)*(B=b)*C)→正しい計算結果
<式2>SUMPRODUCT((A=a)*(B=b),C)→正しい計算結果
<式3>SUMPRODUCT(A=b,B=b,C)→ゼロ
<式4>SUMPRODUCT(1*(A=a),1*(B=b),C)→正しい計算結果

 3つともすべて同じ計算結果が出てくると思いきや、<式3>だけが何故0になるのかが理解できません。
 私は、理由が分からず、腑に落ちないまま<式1>の方法を使っています。
 これは仕様上の問題なのか、詳しい理由が分かる方がいれば、解説をよろしくお願いします。

 なお、私はExcel2000を使っていますが、Excel2002ではどうなるんでしょうか。

A 回答 (2件)

こんにちは



関数での演算と直接的な四則演算とでは扱いが違うのは
多々あります。まして、今回の場合 比較演算の結果を
数式に使おうとしているのですから・・・・

式3は
SUMPRODUCT({TRUE,FALSE,TRUE},{FALSE,TRUE,TRUE},C)
となり配列結果は数値として扱えない状態です。

式4では 比較演算の結果を四則演算 *1 で数値化して
SUMPRODUCT({1,0,1},{0,1,1},C)
となり配列結果は数値としてある変えます。

他の1と2式も同様で
SUMPRODUCT()関数以前に演算で数値化しているため処理可能となります

簡単な例

 A   B  C   D
1 =C1=B1       =A1*1
2 =C2<>B2      =A2*1
3 =SUM(A1:A2)    =SUM(D1:D2)
    • good
    • 0
この回答へのお礼

 正直、マトモな回答が来ないと思っていました。
 よく分かりました。勉強になりました。

お礼日時:2002/11/19 19:55

下の3式をを計算してみます


 <1>・・・ =SUMPRODUCT({1,1})=2
 <2>・・・ =SUMPRODUCT({TRUE,TRUE})=0
 <3>・・・ =SUMPRODUCT({TRUE,TRUE}*1)=2

これから(<2>に着目)、SUMPRODUCT関数は論理値(Boolean)の加算を行っていません。
 <1>・・・ 1+1=2
 <2>・・・ TRUE+TRUE=0
 <3>・・・ {TRUE+TRUE}*1=TRUE*1+TRUE*1=1+1=2

質問の
<式1>は Σ{各要素で(A=a)*(B=b)*Cを計算した演算結果}
        Σ{(Ai=a)*(Bi=b)*Ci}

<式2>は Σ{<各要素で(A=a)*(B=b)を計算した演算結果>×<Cの各要素>}
        Σ{<(Ai=a)*(Bi=b)>*Ci}

<式4>は Σ{<(A=a)*1の計算をした演算結果>×<(B=b)*1の計算をした演算結果>×<Cの各要素>}
        Σ{<(Ai=a)*1>*<(Bi=b)*1>*Ci}

  <式1>、<式2>、<式4> はすべて数値の演算結果を掛け算していることになります。
  従って、<式1>=<式2>=<式4> になります。

  X*Y*Z=(X*Y)*Z=(X)*(Y)*Z が成立するのとおなじでしょう。

ところが、<式3>は
 A=b と B=b が論理値になります。
 従って、論理値を掛け算しながら加算しているので『0』になるはずです。

  =SUMPRODUCT({TRUE,TRUE},{2,3})・・・・・ 0
  =SUMPRODUCT({TRUE,TRUE}*1,{2,3})・・・・ 5

    この2つを比べるとより分かり易いかもしれません・・・


>なお、私はExcel2000を使っていますが、Excel2002ではどうなるんでしょうか。
当方、Excel97ですが、この関数に付いては、Excel2000もExcel2002も同じでしょう。

comvさんとかぶってしまいました?

ご参考に。
    • good
    • 0
この回答へのお礼

 よく分かる解説で、ありがとうございました。
 *演算は、論理値でも数値でも計算できる融通の利く演算で、SUMPRODUCTでは乗算は乗算でも数値しか扱わないという認識でよろしいでしょうか?

お礼日時:2002/11/19 20:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!