[[20061013214009]] 『SUMPRODUCT関数について』(ranmal) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『SUMPRODUCT関数について』(ranmal)

 このサイトで教えていただき、とても便利にかつ助けられ
 使用している関数ですが、 一つの範囲から、2つの条件を指定して
 カウントする方法が分からなくて(出来なくて) 困っています。

 例えば下記のようなデータがあって、3月で、M102とS111の製品型番は
 いくつあるか(何件あるか)を出したいのです。  

    A	  B             
 1   月	製品型番           3月  4月  5月
 2    3	 M102       M102,S111
 3    3	 L101       L101        
 4    3 	 M102       0666
 5    3	 S111       
 6    3	 O666
 7    4	 M102
 8    4	 M102
 9    4	 L101
 10   4	 M102
 11   4	 O666

 実際のデータは2000件くらいあり、半年分あるので、3月から8月分まで
 製品型番は10種類くらいです。通常一つの型番ごとにカウントするのですが、
 この例では「S111」にあたる製品が極端に少ないので、他の製品に混ぜて
 カウントすることになったのです。
 自分なりに考えて、以下のような式を作成してみたのですが

 =SUMPRODUCT(($A$1:$A$11="3")*(OR($B$1:$B$11="M102",$B$1:$B$11="S111")))
 =SUMPRODUCT(($A$1:$A$11="3")*($B$1:$B$11="M102")*($B$1:$B$11="S111"))

 「3」とカウントすべきなのに、両方とも「0」になってしまいます。
 A列が「3」でB列が「M102」か「S111]という意味で単純に考えた式です。
 ご指導、宜しくお願いいたします。

 [Excel2002、2003][WindowsXP]


 こういうことでしょうか?
 
 =SUMPRODUCT(($A$1:$A$11=3)*(($B$1:$B$11="M102")+($B$1:$B$11="S111")))
 
 (キリキ)(〃⌒o⌒)b

 キリキさん
 括弧が・・・・。(汗)

 (HANA)

 えっ?
 何のこと??? (; ̄з ̄)〜〜♪
 
 壁|;)彡ササッ
 
 (キリキ)(〃⌒o⌒)b<HANAさん、いつもありがと〜☆

 良かったです。ドキドキしました。(笑)

 (HANA)

 出来ました〜。
 キリキさん、HANAさん、ありがとうございます。
 HANAさん、毎度お世話になっております。 m(__)m

 *(かける)のではなく+(たす)のですね。

 助かりました〜。

 せっかく教えてもらった方法(関数)を応用できず、使いこなせないで
 申し訳ないです。

 以前薦められた、DCOUNT関数でも試してみたのですが、
 DCOUNT関数は、もっと分からなかった(出来なかった)です。
 これからも、宜しくお願いいたします。
  (ranmal)


 今日、仕事で教えていただいた方法で試してみたら、なぜか出来ないんです。

 実際の数より、多くカウントされてしまいます。
 実際の表は文字なので、そのせいも多少あるのかと
 単純にA列に3、4、5、と数字を入れ、B列にA、B、C、とアルファベットを入力し、
 行を30行位に増やして試したところ、やっぱり多くカウントされてしまいました。

 =SUMPRODUCT((A1:A30="4")*(B1:B30="A")+(B1:B30="C"))

 実際は、10なのに13とカウントされて今います。
 会社のExcelが2002で家のが2003なので、そのせいもあるのかと
 家でも試しましたが、同じ結果でした。
 範囲が短いとちゃんとカウントしてくれます。
 (ranmal)


 実際のデータが見えないので、どうなっているのかわかりませんが、、、
 
 =SUMPRODUCT((A1:A30="4")*(B1:B30="A")+(B1:B30="C"))
                     ~~~
 "4" ですと、文字列の「4」ですが大丈夫ですか?
 
 また、検証の方法として
 数式の入っているセルをアクティブにし、
 ツール → ワークシート分析 → 数式の検証
 【検証】のボタンを押すごとに、数式を紐解くことが出来ますので何処が違うかを
 確認することが出来ます。
 
 (キリキ)(〃⌒o⌒)b

 数字の4(=4)や4を入力したセルを参照(=E5や=A10等)させても同じ結果でした。

 検証をやってみたのですが、"4"や参照したセルに下線がつき
 4の数だけFALSEとなっています。13というのは4の数でした。
 "A"は7個FALSEになり、"C"は3個FALSEになります。
 最終的に=13になります。
 以下が実際の試したデータです。幅を取ってすみません。

 A列  B列
 3	A
 3	B
 3	B
 3	B
 3	C
 3	C
 3	C
 3	A
 3	C
 4	B
 4	C
 4	C
 4	B
 4	C
 4	A
 4	C
 4	C
 4	C
 4	B
 4	A
 4	A
 4	C
 5	C
 5	B 
 5	B
 5	B
 5	A
 5	A
 5	B
 5	B
 5	A
 5	C 

 (ranmal)

 あぁぁぁ〜〜〜
 ranmalさ〜ん!
 
 σ(^o^;)と同じ間違いしてる・・・
 かっこの位置が。。。
 (すぐに気が付かないσ(^o^;)って・・・orz)
 更に、やっぱり "4"(文字) と、4(数字)は別物です。
 だから、数式の検証でも FALSE になるのです。 
 
 =SUMPRODUCT((A1:A30=4)*((B1:B30="A")+(B1:B30="C")))
 コレでどう? 
 
 (キリキ)(〃⌒o⌒)b


 わ〜〜〜できました〜〜〜(^O^)/

 最所にHANAさんが言っていた・・括弧ですか?
 4・・も・・原因・・
 エラーにならないので、間違いないと思い込んでいました。

 ごめんなさい。何度も教えてもらっているのに〜。
 そして、ありがとうございます。

 今日はもうひとつ出来ないことがあって・・
 それは、SUMPRODUCT関数ではないので、新規に質問させていただきます。

 本当に本当にありがとうございましたm(__)m
 (ranmal)

 


 出来てよかった^^
 
 初めから、σ(^o^;)がちゃんとしたものを提示していれば・・・
 ごめんなさいね^^;
 
 (キリキ)(;⌒o⌒)b

 解決しちゃいましたね。
 (いや、決して残念がっているわけでは無いのですよ。)

 >以前薦められた、DCOUNT関数でも試してみたのですが、
 DCOUNT関数は、一つの関数の条件を指定するときに
 重複せずに条件の見出しが必要になるようなので
 今回のケースには向かない様な気がしてきました。
 これは、今度機会があったときに使ってみて下さい。
  (「この条件の時にどんな値になるか調べたい」とか言うときに
   使えるような気がします。ちなみに、今回のを言葉にすると
   「各条件の時にどんな値になるか調べたい」ですかね・・・。)

 その変わりと言っては変わりになるか分かりませんが
 「ピボットテーブル」とか言うものもあったりしますよ。

 そうそう、(4も原因ですが)括弧の位置ですよ。
 最初の式
 >=SUMPRODUCT((A1:A30=4)*(B1:B30="A")+(B1:B30="C"))
 では、 A1:A30が4×B1:B30がA + B1:B30がC
         ~~~~~~~~(1)^^^^^^^^(2)    ~~~~~~~~~(3)
 (1)と(2)が共に成立したものに(3)が成立したものを足し算したのが結果になります。
 「A1:A30が4でB1:B30がAのものと、B1:B30がCのものの件数」
     今回は(1)*(2)=3 と (3)=12 を足したので間違った結果15

 >=SUMPRODUCT((A1:A30=4)*((B1:B30="A")+(B1:B30="C")))
 では、 A1:A30が4 × (B1:B30がA + B1:B30がC)
         ~~~~~~~~~(1)   ^^^^^^^^^^(2)  ~~~~~~~~~~(3)
 (1)と(2)あるいは(3)が共に成立したのが結果です。
 「A1:A30が4で、B1:B30がAかB1:B30がCのものの件数」

 (2)と(3)が同時に成立することがないので、例えば
   (1)と(3)の条件が満たされたものが1件、
   (3)の条件のみ満たされたものが1件あった場合
 最初の式では、1* 0+1 +0* 0+1 =1*0 +1 + 0*0 +1 =2
 後の式では、  1*(0+1)+0*(0+1)=1*1    + 0*1    =1  結果が違ってきます。

 とても単純に行くなら
 =SUMPRODUCT((A1:A30=4)*(B1:B30="A"))+SUMPRODUCT((A1:A30=4)*(B1:B30="C"))
 でも良いかもしれません。
 同じ所は X*a + X*b = X(a+b) みたいな要領で纏めると後の式と同じになります。

 ・・・ってな感じですがどうでしょう?

 (2)と(3)が同時に成立する場合は、足しておいてから両方成立した分を
 引く必要が出てきます。

 (HANA)

 とんでもないです。きりきさん。私こそ教えてもらって
 ちゃんと、確認していれば、よく読めば分かることだったのです。
 でも、そのおかげで?より深くSUMPRODUCT関数のことが理解できたし
 良かったと思っています。

 HANAさん、いつもお手数おかけします。m(__)m
 とても、分かりやすい解説です。以前にリンク貼っていただいたところの
 説明だと文字のカウントではなく、計算が主体のものだったので、
 いまいち分かりにくかっのですが、HANAさんの解説は分かりやすく
 理解できました。本当にいつもありがとうございます。

 別の質問になってしまいますが、ピボットテーブルは、簡単なものだと
 集計等簡単に出来るので 好きで良く使います。
 今回のデータ集計でも、どうにか使えないかチャレンジしましたが、
 あきらめました。
 データをそのままピボットテーブルにしようとするとエラーになってしまい
 例えば、データアイテムの所など金額とか集計ではなく、カウントするのは
 無理だと思い(あきらめ)ました。
 ああ〜、なんか変なこと(意味不明なこと)言ってますよね。うまく説明できません。
 あとで、考えてることまとめて、新規に質問しますので、宜しくお願いします。

 今後とも宜しくお願いします。
 (ranmal)


 おっと・・・書いている間に。

 ちなみに、一番最初の下側の式
 >=SUMPRODUCT(($A$1:$A$11=3)*($B$1:$B$11="M102")*($B$1:$B$11="S111"))
 "3"→3 にしても、上手く行きません。
 条件を全てかけ算してしまうと
 「A列が3で、B列がM102で、B列がS111 のものの件数」
 を計算してしまう為です。
 B列にM102とS111が同時に成立することは無いので、
 (一方がTRUEになっても、もう一方が必ずFALSE)
 最終結果はやっぱり 0 になってしまいます。

 一番最初の上側の式
 >=SUMPRODUCT(($A$1:$A$11=3)*(OR($B$1:$B$11="M102",$B$1:$B$11="S111")))
 なのですが、                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 上手くいきそうなのに、"3"→3 にしても上手く行きません。
 OR関数は、一つでもTRUEならTRUEなので TRUE
 「A列が3で、B列にM102かS111が有った場合  その件数」
 を計算してしまう為と思います。
 B列にM102かS111のどちらかは存在しており(OR関数常にTRUE)
 A1:A11の中に3が5つあるので、結果は5になると思います。
    A列の3を増やしたり減したり、B列のM102とS111を全て消したりすると
    「こんな事かな?」と想像出来る結果が表示されると思います。

 ピボットテーブルで
 >例えば、データアイテムの所など金額とか集計ではなく、カウントするのは
 >無理だと思い(あきらめ)ました。
 フィールド上で右クリック。「フィールドの設定」の中の
 集計の方法で、「データの個数」とか選べますが、
 それは試してみてダメだったのですかね?

 (HANA)

 ・・・・今回も追記。

 ピボットテーブルを使用しようとしたときに
 もしも、月の所が日付で入力されている場合は
 こんな感じでグループ化をすれば良いと思います。
[[20060928210249]]『ピボットテーブルについて』(dokken) 

 ただし、こんな事もあるので元データには注意が必要です。
[[20031219144825]]『ピポットテーブルで行をグループ化したい』(tamaura310) 

 ピボットテーブル入門
https://www.excel.studio-kazu.jp/lib/e2d/e2d.html
 ・・・こちらもカウントではなく合計する手順ですが
 「ライブラリ」のリンクです。

 (HANA)

 HANAさん、 OR関数の疑問まですっきりと解決していただき
 ありがとうございます。他のことは今までの解説でとても良く
 理解できたのですが、OR関数は何故駄目なのか、すっきりとしませんでした。
 すっきりです。
 今日は、お蔭様で全国のデータを一つのシートで地域をリストから選択すれば
 地域ごとに自動集計できるという、すばらしい表が完成しました。
 HANAさんたちの指導がなかったら、絶対に無理でした。
 これからも、更に進化させた表を考えながら力をお借りしながら
 作成しようと思っています。
 ピボットテーブルを利用して作成する時間(余裕)もできたので、
 挑戦してみようと思います。

 > 集計の方法で、「データの個数」とか選べますが、
 あぁ〜試してないです・・。
 試してみます。
 今は、「フィールドの名前が 無効です・・」というエラーが出て
 ピボット化すらできないので、ピボット用にフィールドを整え
 挑戦してみます。

 分からないことがあったら、また新規に「ピボット」で質問して
 教えていただきたいと思いますので、是非是非宜しくお願いいたします。
 (ranmal)


 HANAさん、データの個数で出来ました。(^.^)

 「フィールドの名前が無効です」はフィールドの名前が無い
 列(集計用の計算式の列)があることに気づき、名前を付けたら
 ピボット化出来ました。そして、出来たんです。
 「データの個数」でちゃんとカウントしてくれました。
 これから、色々集計表を作成していこうと思いますので
 まだまだ壁にぶつかることもあると思いますが、
 HANAさんの助言で、ピボットでカウントでき、道が出来たので
 まずは、ご報告まで。

 (ranmal)


 それは良かったです。

 どんどん頑張って下さいね。

 (HANA)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.