エクセルのSUMPRODUCT関数についてお尋ねします。
=SUMPRODUCT($A$1:$A$10,$B$1:$B$10)
と
=SUMPRODUCT($A$1:$A$10*$B$1:$B$10)
の違いは何でしょうか?
両者とも同じ答えを返しますが、いろいろ試したところ、前者は範囲内に文字列があってもそれを無視して計算し、後者は文字列があればエラーになるようですが、その理解で正しいでしょうか?
正しいとすれば、なぜでしょうか?
No.4
- 回答日時:
お師匠さん、こんばんは。
ヘルプの読み込みがあまいですぞ。(笑)
●ヘルプによると、数値以外の「要素」は、0とみなす、とあります。
それを踏まえて。。。。
_____A___B____
1____3___10___
2____あ___20___
3____2___30___
----------------------------------------------------------------
(1)SUMPRODUCT(A1:A3 , B1:B3)
SUMPRODUCT(配列1 ,配列2)
配列1* 配列2
3 * 10 =300
0 * 20 =0
2 * 30 =600
ヘルプより、配列1の2番目の要素「あ」は、0として計算しているので、エラーはでない。
-----------------------------------------------------------------
(2)SUMPRODUCT(A1:A3 * B1:B3)
SUMPRODUCT( 配列1 )
配列1
3 * 10 =300
あ * 20 =#VALUE
2 * 30 =600
この場合は掛け算の段階ではまだ「配列の要素」ではないので個々の掛け算は通常の法則でされ「あ*20」はエラーとなる。
そしてそれらの結果が配列の要素になるが、配列がひとつなのでそれ以上掛け算するものがないので
ここでもヘルプは当てはまらず通常の法則で合計されるため結果としてエラーになる。
-----------------------------------------------------------------
たぶんこんなことではないかと、← おい、おい。(^^;;;
何れにしろ、ヘルプの、数値以外の▲要素▲、という文言がポイントだと思われます。
以上です。
No.3ベストアンサー
- 回答日時:
こんばんは。
配列計算をしているのは言うまでもありませんが、この、SUMPRODUCT は、必ず、内部のひとまとまりから計算するという性質を持っています。ただ、VBAのように左から時系列かどうかは、言語が違いますから、分かりません。しかし、この引数は、パラメータ配列になっています。そして、その引数それぞれの有効値を調べて、それを演算出来る値かどうか調べます。
文字列を入れてもエラーにならないのは、元々、そこに注釈などを入れるために考えられたものです。値を文字列か数値かを精査して演算するように出来ています。最初、SUM関数に対し、そのように作られました。プログラムとしては、初歩的なものですが、そのアイデアは、今日まで、踏襲しているようです。このオリジナルの仕組みを考えたのは、VisiCalc の開発者、ブルックリン氏です。昔々、本で読んだことがあります。 PRODUCT関数とも共通です。3つの関数は、同じような仕様を持っています。
こちらが、本来の使い方です。
=SUMPRODUCT($A$1:$A$10,$B$1:$B$10)
つまり、
$A$1:$A$10 と $B$1:$B$10 の値を別々に取得しています。
では、
=SUMPRODUCT($A$1:$A$10,$B$1:$B$11)
とすると、なぜ、エラーが出るかというと、$B$11 に対応する数値が、NULL値(有効な値がない)だからです。それは、全体に反映させてしまいます。(理由は分かると思いますが、プログラムが途中で、エラーで止まってしまうからです)
ところが、こちらは、
=SUMPRODUCT($A$1:$A$10*$B$1:$B$10)
$A$1:$A$10*$B$1:$B$10 は、分割出来ません。したがって、この数式の中でのエラーは、そのまま、元の数式に反映されます。
ご自分で、ユーザー定義関数を作ってみれば分かります。VBAでも、同じように作ることが可能です。一度、試してみるとよいです。
> $A$1:$A$10*$B$1:$B$10 は、分割出来ません。したがって、この数式の中でのエラーは、そのまま、元の数式に反映されます。
なるほど、=SUMPRODUCT($A$1:$A$10*$B$1:$B$10)では=SUMPRODUCT(配列)なんですね。
=SUMPRODUCT($A$1:$A$10,$B$1:$B$10)ではじめて、=SUMPRODUCT(配列1,配列2)ということですね。
Wendy02さま、いつも有難うございます。
No.2
- 回答日時:
自分も試した範囲でですが・・・。
SUMPRODUCT関数は文字列を0と見なしますが、エラー値を含む場合はエラーとなります。
後者は文字列がある場合、カッコ内の計算過程でエラー値が生じます。そのためSUMPRODUCT関数もエラー値を返します。
前者でも範囲内に#VALUE!や#N/Aを含む場合はエラーとなります。
15
22
34
42
53
6a
#N/A1
81
92
108
前者:#N/A
後者:#VALUE!
No.1
- 回答日時:
前者はSUM関数と同じで、文字は0と見なして計算します。
後者は文字で乗算してるので#VALUE!ですね。
内容に関してはあなたの考え通りです。
SUMPRODUCT関数は範囲の積の和を求めるので、
エラーがでなければ同じ結果ですね。
こんな使用法もあります。
A列が10を超える値の時のA列とB列の積の和
=SUMPRODUCT(($A$1:$A$10>10)*($A$1:$A$10),$B$1:$B$10)
A列が"合格"という文字のB列とC列の積の和
=SUMPRODUCT(($A$1:$A$10="合格")*($B$1:$B$10)*($C$1:$C$10))
A列とB列の合計とC列の積の和
=SUMPRODUCT($A$1:$A$10+$B$1:$B$10,$C$1:$C$10)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 関数について 4 2023/05/26 11:22
- Excel(エクセル) 【!】Excel 2つの条件付き書式が反映されません。。 5 2023/07/14 16:47
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- その他(パソコン・スマホ・電化製品) EXCELのSUMPRODUCT関数について 2 2022/09/21 17:30
- Excel(エクセル) 名前と日付が一致する箇所にフラグを立てる関数が知りたいです 4 2022/08/11 02:24
- Visual Basic(VBA) 重複したデータ(空白は除く)のVBA表記について 5 2022/08/15 12:41
- Excel(エクセル) 特定の文字の合計値(空白を無視+可変に対応)を求める関数について 1 2022/08/18 10:51
- その他(コンピューター・テクノロジー) googleスプレッドシートでカッコ内の文字数をカウントしたい 1 2023/01/17 15:52
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- その他(Microsoft Office) ある表(10桝程度)の中に数字が入っています。ダブっている数字を除く数字の合計数の計算方法 5 2023/02/15 11:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報