• ベストアンサー

エクセル SUMPRODUCT関数でこんな場合は?

Excel2000です。 添付画像のような表があります。 A列、B列に数値、C列に文字列です。 A列の数値は単なる数値ではなく、計算式で求められています。 したがって表内A列の何も表示されていないセルは、計算の結果 ="" になったものです。 B列の数値は直接入力した単なる数値です。 この表で仮に、C列がAの場合のA列合計を求めるため、D6に =SUMPRODUCT((A1:A5)*(B1:B5)*(C1:C5="A")) としてみましたが、="" を乗じているためVALUEエラーになります。 =""を排除しようと、 =SUMPRODUCT((A1:A5<>"")*(A1:A5)*(B1:B5)*(C1:C5="A")) としてみましたが、やはりVALUEエラーになります。 こういう場合はどうしたらよいのでしょうか? ="" を =0 に変えるという回答以外でお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 SUMPRODUCT の基本形を使ったほうがよいかもしれません。 引数の中で演算するのではなくて、それぞれの引数においてあげればよいと思います。  ="" でなくても、文字でも構いません。 もともと、SUMのついた関数は、文字は読まないで、0で扱うように作られています。だから、引数は、配列ですから、配列のまま入れます。  =SUMPRODUCT(A1:A5,B1:B5,(C1:C5="A")*1) 他には、Lotus123系の、N関数を使うと、このようになります。  =SUMPRODUCT(N(OFFSET(A1,ROW(A1:A5)-1,))*(B1:B5)*(C1:C5="A")) しかし、こちらは、あまり上手くありませんね。

merlionXX
質問者

お礼

Wendy02さま、いつも大変おせわになりありがとうございます。 SUMPRODUCT の基本形は、SUMPRODUCT(配列1,配列2,配列3,..)でしたね。 この基本形に(C1:C5="A")という条件を付加できるとは存じませんでした。 =SUMPRODUCT(A1:A5,B1:B5,(C1:C5="A")*1) はSUMPRODUCT(配列1,配列2,配列3)だと思いますが、 =SUMPRODUCT(A1:A5,B1:B5*(C1:C5="A")) と SUMPRODUCT(配列1,配列2) 書き変えることが可能でしょうか? やってみると同じ答えを返すようですが、自信ありません。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 SUMPRODUCT(配列1,配列2) ということは、こういうことですか? =SUMPRODUCT(A1:A5,B1:B5*(C1:C5="A"))  配列1, 配列2 になっていますね。

merlionXX
質問者

お礼

ありがとうございます。 安心しました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

NO1です。 数式に不足箇所がありましたので訂正します。 =SUM(IF(C1:C5="A",IF(A1:A5<>"",A1:A5*B1:B5)))

merlionXX
質問者

お礼

ありがとうございます。 CSE数式はどうも敷居が高くて苦手なのですが、正答を返すことを確認しました。

回答No.2

=SUMPRODUCT(VALUE("0"&A1:A5)*(B1:B5)*(C1:C5="A")) でいかがでしょうか。

merlionXX
質問者

お礼

cafe_au_laitさん、ありがとうございました! そうか、計算上で、"" を0に変換してしまえばいいんですよね。 何と柔軟な頭脳をお持ちの方でしょう、感心しました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 =SUM(IF(C1:C5="A",IF(A1:A5<>"",A1:A5))) 配列数式の為、入力完了時にshift+ctrl+enterキーを同時押下して下さい。

merlionXX
質問者

お礼

ありがとうございます。

関連するQ&A