[[20030619153600]] 『データの種類の数を簡単に出す』(nana7) ページの最後に飛ぶ

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

 

『データの種類の数を簡単に出す』(nana7)

たとえばA列に A B C B C・・・と上から順番に入っていて
齡ヤ下に「データの種類の数」を出したいです。
たとえの答えは「R」です。A B Cの3種類なので。
これを人間が数えず出す方法が知りたいです。


 たとえばA1からA8までデーターが入っているとします。A9に
 =SUMPRODUCT(N(MATCH(A1:A8,A1:A8,)=ROW(A1:A8)))
 で種類の個数が出ます。(ケン)

ありがとうございます、すごく助かりました。
関数って素敵です。すごいですねー。(nana7)


 MATCHは英字の大文字と小文字を区別しないようなので、
 CODEを追加してみました。
 CODEに配列を設定したため、SUMPRODUCTが使えず、SUMの配列数式としてます。
 何かフ足しにしてください。

 {=SUM(N(MATCH(CODE(A1:A8),CODE(A1:A8),)=ROW(A1:A8)))}

 (ramrun)昼休み〜

 ramrunさん、ありがとうございます。大文字、小文字この問題にぜんぜん気が付きませんでした。
 まだまだですね。もっと勉強をかさねます。(ケン)

 すみません 応用して遣わせていただこうとしたら
  中の範囲指定を変えてみたら使えません。どうしてでしょうか?
  たとえば最初のケンさんの例だとA8までだったのをA21くらいまで増やして範囲をかえてみたいんですけどバリューとかでちゃいます。 何ェいけないのでしょうか


 苦労は買ってでもしろというのは、結構当たってます。
 人に教えるということを通じて自分も成長できますし。
 最近はいろんな方が回答をつけるようになって、見てても楽し「ですね。

 三賢者(kazuさん、シニアさん、通りすがりのものさん)のレスは
 見逃さないようにしましょう(笑)。
 kazuさん以外Hヘ、ここで「お題」をいたセいて遊んでいます。
 気楽にいきましょう。
 ちなみに私が「スレ上げ委員会」と書いているものは、
 レスが付かない変わった(いろんな意味で)スレッドです。
 最近押され気味なので、ケンさんもチャレンジしてみてください。
 Excel以外にも詳しくなれます、多分(笑)B

 上の私の関数は、よく考えたら比較対象が1文字の場合のみですね(汗)。
 それに空のセルではエラーだったり。
 参考程度にしておいてください、というより実は使えないですね。

 nana7さん、3ヶ所とも直してますか?

 =SUMPRODUCT(N(MATCH(A1:A21,A1:A21,)=ROW(A1:A21)))
                       ↑     ↑           ↑
 (ramrun)

=SUMPRODUCT(N(MATCH(D4:D28,D4:D28,)=ROW(D4:D28)))

こんな感じです。でも答えは0と出てしまいます。
どうしてでしょう
#98A0522 とかこーゆーデータがずらーっと入っています

すみません できました。原因は

     A          B
1  商品名     タイプ
2    A         1
3    B         8
4    D         3
5    A         1
6
7  (データの種類を出すところ)

 というように一番上に項目名があったり関数の入っているセルの上に空欄があるとだめでした。 例の場合範囲を(A2:A5)としてもだめだったんです。(nana7)

 衝突しちゃったようで、上に書かせていただきます。

 >一番上に項目名があったり

 たしかにそうですね。
 MATCHが返す配列番号と、ROWが返す行番号がずれてしまうスめです。
 もし4行目からにしたいなら、

 =SUMPRODUCT(N(MATCH(D4:D28,D4:D28,)+3=ROW(D4:D28)))
                                    ↑

 とつじつまを合わせる必要がありワキ。

 関数の上のセルが空欄でも大丈夫だと思うけど?

 (ramrun)

追加質問させて下さい。

 A列がAナあるB列の個数は何個かってだせますか?
 A列がAであればその条件に合っているBは何種類あるか です。

 あら、いつの間にかすごい所に話が行っていますね。
 ramrunさんがんばってみます。ありがとうございます。
 nana7さん追加質問の件ですが
[[20030619174226]]
 こう言うことですか?(ケン)

 たびたび失礼して...

 >関数の上のセルが空欄でも大丈夫だと思うけど?
 試したときに大丈夫と思ったんですが、どうやら勘違いだったみたいです(汗)。
 おっしゃるとおりですね。

 nana7さんの追加質問は難しいです。

           A         B       C       D         E        F        G         H
 1	商品名	タイプ		A	MATCH	抽出	度数	出現回数
 2	A	1		TRUE	1	1	1	5
 3	C	2		FALSE	2	0	0	
 4	B	0		FALSE	3	0	0	
 5	A	3		TRUE	4	4	1	
 6	A	9		TRUE	5	5	2	
 7	A	2		TRUE	2	2	1	
 8	A	4		TRUE	7	7	1	
 9	A	9		TRUE	5	5	0	
 10	B	5		FALSE	9	0	0	

 数式は下にあるとおり。
 作表が面倒なので、見出しで検討つけてください(汗)。

 A		MATCH			抽出		度数					出現回数
 {=A2:A10=D1}	{=MATCH(B2:B10,B2:B10,0)}	{=D2:D10*E2:E10}	{=IF(F2:F10>0,FREQUENCY(F2:F10,F2:F10),)}	=COUNTIF(G2:G9,">0")
 {=A2:A10=D1}	{=MATCH(B2:B10,B2:B10,0)}	{=D2:D10*E2:E10}	{=IF(F2:F10>0,FREQUENCY(F2:F10,F2:F10),)}
 {=A2:A10=D1}	{=MATCH(B2:B10,B2:B10,0)}	{=D2:D10*E2:E10}	{=IF(F2:F10>0,FREQUENCY(F2:F10,F2:F10),)}
 {=A2:A10=D1}	{=MATCH(B2:B10,B2:B10,0)}	{=D2:D10*E2:E10}	{=IF(F2:F10>0,FREQUENCY(F2:F10,F2:F10),)}
 {=A2:A10=D1}	{=MATCH(B2:B10,B2:B10,0)}	{=D2:D10*E2:E10}	{=IF(F2:F10>0,FREQUENCY(F2:F10,F2:F10),)}
 {=A2:A10=D1}	{=MATCH(B2:B10,B2:B10,0)}	{=D2:D10*E2:E10}	{=IF(F2:F10>0,FREQUENCY(F2:F10,F2:F10),)}
 {=A2:A10=D1}	{=MATCH(B2:B10,B2:B10,0)}	{=D2:D10*E2:E10}	{=IF(F2:F10>0,FREQUENCY(F2:F10,F2:F10),)}
 {=A2:A10=D1}	{=MATCH(B2:B10,B2:B10,0)}	{=D2:D10*E2:E10}	{=IF(F2:F10>0,FREQUENCY(F2:F10,F2:F10),)}
 {=A2:A10=D1}	{=MATCH(B2:B10,B2:B10,0)}	{=D2:D10*E2:E10}	{=IF(F2:F10>0,FREQUENCY(F2:F10,F2:F10),)}

 これを1つの数式にまとめることが出来ればすっきりすると思いますが、
 とりあえずコーヒーブレイク(汗)。

 (ramrun)

 やっぱりまとめようがなかったです(汗)。

 (ramrun)

 仮に商品名,タイプのデータがA2:B30にあるとして、C2に =A2&B2 と入力し、下方コピーします。
A32にA、A33にB,A34にC と入力します。
ramrunさんの式をお借りして、
B32に =SUMPRODUCT((($A$2:$A$30)=A32)*(N(MATCH($C$2:$C$30,$C$2:$C$30,0)+1=ROW($C$2:$C$30))))
この式をB34までコピーして、商品名に対するタイプの数を表示させます。
A32:A34を選択して、「セルの書式設定・表示形式・ユーザ定義」で @"タイプ" とします。
B32:B34を選択して、「セルの書式設定・表示形式・ユーザ定義」で 0"種類"  とします。
A32:B34の表示位置を変更する場合はA32:B34の範囲選択して外郭線をドラッグして他の適当な場所に移動します。
商品名の種類がA,B,C以外にあれば,下に追加して式をコピーします。
※【参考】B32の式を範囲名で入力する例
     A          B     C
 1  商品名     タイプ 商品タイプ
 2    A         1     A1
 3    B         8     B8
 4    D         3     D3
 5    A         1     A1
 ・  ・     ・     ・
30    A         3         A3
A1:A30を選択し、Ctrlきを押しながらC1:C30を選択したら、挿入メニューの「名前・作成」で[上端行]にチェックしてOK
=SUMPRODUCT(((商品名)=A32)*(N(MATCH(商品タイプ,商品タイプ,0)+1=ROW(商品タイプ))))
となり、データが増えた場合、挿入メニューの「名前・定義」で範囲変更します。
 (シニア)


 > C2に =A2&B2

 なるほど! 私のレベルではソコに行きつけませんでした。
 天竺までは、まだ相当ありそうです(笑)。

 (ramrun)

 今、ない頭で相当考えていました。ぜんぜん発想が違いました。レベルが違いますね。
精進します。(ケン)


 同感です。老後の遊びの場にお邪魔して、皆様からお知恵を頂いています。
最近は皆さんの参加が活発になり、出番がなくなり、愛読させて頂いています。
これからも、珍問,奇問,難問の解決策を楽しみにしています。
今後共ご指導よろしくお願します。
 (シニア)

おはようございます。あのですねー。私の質問がいけなかったのかもしかしてご理解していただいてるのかもわからず^^;すみません〜。確認です。
それぞれの列の一番下にそれぞれの列に何個ずつデータがあるかって数を出すことはOKでした。
 それでこんとは A列のタイプがAのものでC列はデータの種類が何個あるか
                Bのものは何種類あるかって
言う風に普通はフィルタとか使うようなことを何万行ってあるので行いたいってことなんです。

     A列      B列       C列

1    A        あ       55JI

2    B        あ       65K

3    A        い       52MK

4    B        う       668L

5    A        い       98OP

6    B        う       668L

この場合 A列がAでC列のデータの種類は3種類。
     A列がBでC列のデータの種類は2種類となります。
これを出すには?やはり先ほどの助言であっていらっしゃるのでしょうか?
すみません A列とB列逆に考えてください。


 シニアさんので出来ると思います。

 三賢者と三老者は漢字変換で間違いませんよ(笑)。
 亀の甲より年の功といふではないですか。
 えっ、フォローになってませんか?!

 (ramrun)昼休み〜

コメント返信:

[ 一覧(最新更新順) ]


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