
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ではどうなるんでしょうか。
No.1ベストアンサー
- 回答日時:
こんにちは
関数での演算と直接的な四則演算とでは扱いが違うのは
多々あります。まして、今回の場合 比較演算の結果を
数式に使おうとしているのですから・・・・
式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)
No.2
- 回答日時:
下の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さんとかぶってしまいました?
ご参考に。
よく分かる解説で、ありがとうございました。
*演算は、論理値でも数値でも計算できる融通の利く演算で、SUMPRODUCTでは乗算は乗算でも数値しか扱わないという認識でよろしいでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- その他(パソコン・スマホ・電化製品) EXCELのSUMPRODUCT関数について 2 2022/09/21 17:30
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
- Excel(エクセル) 関数について 4 2023/05/26 11:22
- C言語・C++・C# C言語 3 2022/10/04 15:07
- 情報処理技術者・Microsoft認定資格 応用情報処理技術者試験のシステム利用率の計算について 2 2022/03/28 07:43
- Excel(エクセル) 特定の文字の合計値(空白を無視+可変に対応)を求める関数について 1 2022/08/18 10:51
- 高校 有効数字計算 確定した値を含む 2 2023/01/18 06:03
- 労働相談 有給休暇使用時の賃金の計算方法について 5 2022/04/04 00:02
- Excel(エクセル) 【詳しい方教えて下さい】EXCEL条件に一致する値の複数抽出 9 2022/04/29 10:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0から1になった時の増加率を教...
-
9X2乗-6X+1 はどうやった...
-
1/3乗などの計算方法
-
集合
-
自然対数Ln(x)からxを求める方...
-
イコール
-
i+i^2+i^3+……+i^50の解答
-
数学 ∑(1からnまで)1/k2乗...
-
逆関数の求め方
-
分数式の計算で答えがこうなっ...
-
中学数学 a※b=1/3(a+b)とする...
-
Excel MONTH(A1+11)はなぜ翌月...
-
一日の加工数の計算
-
数列{an} の a1=1 an+1=(7an-1)...
-
改良土のCBR
-
15%増しの計算方法
-
電卓の使い方 乗数はどうした...
-
原価25000円に利益10%を上乗せ...
-
「原価に20%乗っけて販売」っ...
-
2割乗せる。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0から1になった時の増加率を教...
-
1/3乗などの計算方法
-
自然対数Ln(x)からxを求める方...
-
逆関数の求め方
-
9X2乗-6X+1 はどうやった...
-
中学 数学 こういう問題の時答...
-
イコール
-
改良土のCBR
-
(X-4)(3X+1)+10 この式を因...
-
時定数の計算を教えてください
-
分数式の計算で答えがこうなっ...
-
高校数学 数IIB なぜ急にx^2-2x...
-
中学数学 a※b=1/3(a+b)とする...
-
教えてください!
-
因数分解の問題で質問です。 X^...
-
20〜200までの自然数の和
-
数1 三角形ABCにおいて、a=2√3...
-
パスカルの三角形と未使用での展開
-
小学生の算数:何通りかの計算
-
比例式
おすすめ情報