- ベストアンサー
SUMPRODUCT関数について
対象は D10からK39 リストは AD1からAJ1まで で、 各列にリストの文字のある数をあらわしたい。 以前、(例えばDの列) 40行目に =SUMPRODUCT(COUNTIF(E10:E39,$AD$1:$AJ$2)) でどうかと教えてもらい、うまくいってはいますが、理解ができていません。 今後のために =COUNTIF(D10:D39,$AD$1:$AJ$2) ではなぜダメなのかを理解したいんですが?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> =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関数です。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
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)
> SUMPRODUCT() のカッコ内ではOKなんですか? はい、それがSUMPRODUCT関数の使い勝手が良いところでして、他にも複数条件検索などでよく使われます。 こんな感じ↓ http://miyahorinn.fc2web.com/faq/faq100.html
補足
さっそくありがとうございます。 なんとなく分かりました。 でも、<$AD$1:$AJ$2という範囲指定が出来ない>のに、 SUMPRODUCT() のカッコ内ではOKなんですか?