[[20111019143023]] 『グラフを使わず散布図をプロットしたい』(コマッタ) ページの最後に飛ぶ

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

 

『グラフを使わず散布図をプロットしたい』(コマッタ)

グラフを使わず散布図をプロットしたいのですが、どんな方法がありますか?

教えて下さい。

下記のデータが有り、結果の表の様にセルに自動で年齢と級を読み取って
氏名を入れていきたいのですがどんな関数を使えば出来るのでしょうか?

データ

 ┌──┬──┬──┐
 │氏名│年齢│ 級 │
 ├──┼──┼──┤
 │A君 │ 20 │1級 │
 ├──┼──┼──┤
 │B君 │ 25 │2級 │
 ├──┼──┼──┤
 │C君 │ 30 │3級 │
 ├──┼──┼──┤
 │D君 │ 40 │4級 │
 ├──┼──┼──┤
 │E君 │ 50 │5級 │
 └──┴──┴──┘

結果

 ┌──┬──┬──┬──┬──┬─┐
 │    │ 20 │ 25 │ 30 │ 40 │50│
 ├──┼──┼──┼──┼──┼─┤
 │1級 │A君 │    │    │    │  │
 ├──┼──┼──┼──┼──┼─┤
 │2級 │    │B君 │    │    │  │
 ├──┼──┼──┼──┼──┼─┤
 │3級 │    │    │C君 │    │  │
 ├──┼──┼──┼──┼──┼─┤
 │4級 │    │    │    │D君 │  │
 ├──┼──┼──┼──┼──┼─┤
 │5級 │    │    │    │E君 │  │
 └──┴──┴──┴──┴──┴─┘

WindowsXP、Excel2003


 氏名	年齢	等級
 A	20	1級
 B	20	1級
 C	20	1級
 D	30	2級
 E	30	2級

 こんなときはどんなグラフ?

 (GobGob)

 ┌──┬──┬──┬──┬──┬─┐
 │    │ 20 │ 25 │ 30 │ 40 │50│
 ├──┼──┼──┼──┼──┼─┤
 │1級 │A君 │    │    │    │  │
 │1級 │B君 │    │    │    │  │
 │1級 │C君 │    │    │    │  │
 ├──┼──┼──┼──┼──┼─┤
 │3級 │    │    │D君 │    │  │
 │3級 │    │    │E君 │    │  │
 └──┴──┴──┴──┴──┴─┘

となりますね。
やっぱり、グラフ機能の散布図を使うしか手がないですか?


 1セル内に複数、となると数式ではチトつらいかもね。

 けど、、、オイラの例表から横軸の

 20、25、30、40、50 ってのをどう抽出するの?
 条件がないやんねぇ?

 20、25、30、40、50 ってのは不変?(固定?)

 (GobGob)

>20、25、30、40、50 ってのは不変?(固定?)

X軸は18歳〜60歳までの1歳刻みの固定で考えています。

上記データは、簡略化したものです。


 セル毎に分ける案。

	A	B	C	D	E	F	G	H	I	J	K	L	M	N
1	氏名	年齢	等級	作業列1	作業列2			18	19	20	21	22	23	24
2	A	18	1級	1	1級_1		1級	A						
3	B	19	2級	2	2級_1		1級			C				
4	C	20	1級	1	1級_2		1級				H			
5	D	21	2級	2	2級_2		2級		B					
6	E	21	2級	2	2級_3		2級				D			
7	F	20	3級	3	3級_1		2級				E			
8	G	24	2級	2	2級_4		2級							G
9	H	21	1級	1	1級_3		2級				J			
10	I	23	3級	3	3級_2		3級			F				
11	J	21	2級	2	2級_5		3級						I	

 D:E列作業列

 D2 =IF(C2="","",IF(COUNTIF(C$2:C2,C2)=1,MAX(D$1:D1)+1,VLOOKUP(C2,C$1:D1,2,FALSE)))
 E2 =C2&"_"&COUNTIF(C$2:C2,C2)
 D2:E2 下へコピー。

 H1〜年齢入力
 G列に級。

 G2 =IF(COUNT(D:D)<ROW(A1),"",INDEX(C:C,MATCH(SMALL(D:D,ROW(A1)),D:D,0)))

 H2〜範囲に散布

 H2 =IF(INDEX($B:$B,MATCH($G2&"_"&COUNTIF($G$2:$G2,$G2),$E:$E,0))=H$1,INDEX($A:$A,MATCH($G2&"_"&COUNTIF($G$2:$G2,$G2),$E:$E,0)),"")
 右へ範囲分コピー。

 G2より範囲を下へコピー。

 (GobGob)

 無理やり1セル内で収めてみました。
ただし条件が
・年齢、級を昇順にソートしておくこと。
になります。
年齢が第一条件で、級を第二条件としてソートしてください。

 	A	B	C	D	E	F	G	H	I	J	K	L
1	氏名	年齢	 級 	作業列1	作業列2			20	25	30	40	50
2	A 	20	1級	20-1級	A 		1級	A 				L
3	B 	25	6級	25-6級	B 		2級					
4	C 	25	5級	25-5級	C 		3級			E 	I J 	
5	D 	25	5級	25-5級	C D 		4級			F 	K 	
6	E 	30	3級	30-3級	E 		5級		C D 	G 		M N 
7	F 	30	4級	30-4級	F 		6級		B 	H 		O 
8	G 	30	5級	30-5級	G 							
9	H 	30	6級	30-6級	H 							
10	I 	40	3級	40-3級	I 							
11	J 	40	3級	40-3級	I J 							
12	K 	40	4級	40-4級	K 							
13	L 	50	1級	50-5級	L 							
14	M 	50	5級	50-5級	M 							
15	N 	50	5級	50-5級	M N 							
16	O 	50	6級	50-6級	O 							
 作業列1のD2 =B2&"-"&C2
 作業列2のE2 =IF(AND(C2=C1,B2=B1),E1&CHAR(10)&A2,A2)
 図の一番左上のH2 =IF(COUNTIF($D$2:$D$20,H$1&"-"&$G2)=0,"",INDEX($E$2:$E$20,IF(COUNTIF($D$2:$D$20,H$1&"-"&$G2)<=1,MATCH(H$1&"-"&$G2,$D$2:$D$20,0),MATCH(H$1&"-"&$G2,$D$2:$D$20,0)+COUNTIF($D$2:$D$20,H$1&"-"&$G2)-1)))
 H2を範囲内すべてにコピー。

 図範囲の書式設定で、「折り返して表示」にチェックを入れる。

 ソート順番狂うとでなくなりますのでお気をつけて。
(さくら)

  作業列使うんだから1セル内に収められますな。

 さくらさん案を参考に。

 D2 =C2&"_"&B2
 E2 =IF(COUNTIF(D2:D$11,D2)=1,A2,A2&CHAR(10)&INDEX(E3:E$12,MATCH(D2,D3:D$12,0)))

 D2:E2 下へコピー。 (データ最終行の1行下は空欄のこと)

 H2 =IF(COUNTIF($D:$D,$G2&"_"&H$1),INDEX($E:$E,MATCH($G2&"_"&H$1,$D:$D,0)),"")
 範囲コピー。

 ※並び替え必要なしっす。

 (GobGob)

コメント返信:

[ 一覧(最新更新順) ]


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