• ベストアンサー

SUMPRODUCT関数について

対象は D10からK39 リストは AD1からAJ1まで で、 各列にリストの文字のある数をあらわしたい。 以前、(例えばDの列) 40行目に =SUMPRODUCT(COUNTIF(E10:E39,$AD$1:$AJ$2)) でどうかと教えてもらい、うまくいってはいますが、理解ができていません。 今後のために =COUNTIF(D10:D39,$AD$1:$AJ$2) ではなぜダメなのかを理解したいんですが?

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

> =COUNTIF(D10:D39,$AD$1:$AJ$2)ではなぜダメなのか COUNTIF関数単独では検索値を複数指定できません。$AD$1:$AJ$2という範囲指定が出来ないのです。ですから通常は、=COUNTIF(D10:D39,$AD$1)として一つの値を検索します。 =COUNTIF(D10:D39,$AD$1)+COUNTIF(D10:D39,$AE$1)+COUNTIF(D10:D39,$AF$1)+途中省略+COUNTIF(D10:D39,$AJ$1) として初めて$AD$1:$AJ$2という範囲にある複数の値を検索できますね。 これを合算したのがSUMPRODUCT関数です。

noname#141256
質問者

補足

さっそくありがとうございます。 なんとなく分かりました。 でも、<$AD$1:$AJ$2という範囲指定が出来ない>のに、 SUMPRODUCT() のカッコ内ではOKなんですか?

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

COUNTIF関数の条件は複数範囲を指定して、1度にCOUNTは出来ない関数だからです。 質問者の想像している表現に近い物に 例データ A2:A10 a b c d e a f g b b a a C2:C3に a b 空きのセルに =SUM(COUNTIF(A2:A20,C2:C3)) と入れて、SHIFT,CTRL,ENTERのキーを同時押しする。 (配列数式) ガある。 結果7 意味はA2:A20の範囲で値がC2かC3の値が出現する回数を足す、となり 素人にもわかりやすいが、次元が違う考え方が取り入れられていて、 仕組みも含めてエクセルでは配列数式は上級編ということになっている。この式がシート上に多いと計算時間がかかりメモリを食うかもしれないので、普通はSUMPRODUCT関数の回答が多い。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

> SUMPRODUCT() のカッコ内ではOKなんですか? はい、それがSUMPRODUCT関数の使い勝手が良いところでして、他にも複数条件検索などでよく使われます。 こんな感じ↓ http://miyahorinn.fc2web.com/faq/faq100.html

関連するQ&A

専門家に質問してみよう