[[20090620162908]] 『1列のデータをグループ分けし2列に順番通り並べ』(ワカチコ) ページの最後に飛ぶ

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

 

『1列のデータをグループ分けし2列に順番通り並べる。』(ワカチコ)

 順番 品番
 1・0  A-11
 2.0  B-11
 3.0  C-32
 4.0  A-43
 5.0  C-23
 6.0  B-42
 ・  ・
 ・  ・
 ・  ・
 200.0 B-11

 このように縦1列にならんだデータが200行ほどあります。
 これを2つのグループに分けて上から順番通りに並べたいのです。

 順番 品番         グループA       グループB
 1・0  A-11         順番 品番      順番 品番
 2.0  B-11         1・0  A-11      2.0  B-11
 3.0  C-32         4.0  A-43      3.0  C-32
 4.0  A-43         5.0  C-23      6.0  B-42 
 5.0  C-23         200.0 B-11
 6.0  B-42
 ・  ・
 ・  ・
 ・  ・
 200.0 B-11

 以上のような感じです。

 元データには手を加えれません。(数値をダウンロードします)
 予めグループAとグループBの
 品番を登録しておき、取り込んだ元データを上記のように
 振り分けすることなるのでしょうか?

 どのようにすればできるのでしょうか?
 よろしくお願いします。

 Excel2000・Windows2000を使用しています。

 ーーーーーー
 うまく表示されませんので、返信/編集 をクリックしてください。
 ※行頭を半角スペースから始めるといいです。

 B-11がどちらのグループにもありますが、どうなのでしょう?

 回答でなくて、ごめんなさい。
 グループAとグループBの規則づけが、よく解らないと思うのですが、……

 グループAの順番 1、4、5、8、 9、12、……、200
 グループBの順番 2、3、6、7、10、11、……、199

 以上の条件で 、元データ から、品番を引っぱってくる様な事ですか?
 (??)

 >上から順番通りに並べたいのです。
 「上から順番に」ではなく「順番通りに」であれば
 何順にするのかの情報も必要ですね。

 元データは、「順番」と言う項目で昇順に成っている様ですが
 実際は成っていなくて、最終的にはここを昇順にしたい
 って事かな・・・?

 (HANA)

 わかりにくくてすみません。

 200.0のB-11は同じ品番ですので グループBになります。
 間違っていました。

 グループA・グループBに順番の規則性はありません。
 A-11は、A
 A-43は、A
 C-23は、A
 B-11は、B
 C-23は、B
 B-42は、B
 と予め決まっているのですが、元のデータにはないので
 データを取り込んだ時に、それぞれのグループを指定して
 振り分けたいです。
 順番は、元データの数値の小さい方から上にして並べます。
 よろしくお願いします。

 あらかじめグループA グループBの
 品番が入力済みであることが条件ですが 

 作業列を使用してもいいなら

 「元データ」の右側に作業列を挿入して
 数式を入力

 それをもとに
 INDEX MATCHの組み合わせでできます。

 (ラデツキー)


 その作業列の作成方法と
 INDEX MATCHのやり方の
 手順も教えていただけますか
 よろしくお願いします。

 セル番地が提示されていないので応用してください。

 「元データ」がA列:B列
 「グループA」がD列:E列
 「グループB」がG列:H列 として

 C列を作業列
 C2
 =B2&"-"&COUNTIF($B$2:B2,B2)
 フィルハンドルで下にコピー

 D3
 =INDEX($A$2:$A$201,MATCH(E3&"-"&COUNTIF(E$3:E3,E3),$C$2:$C$201,0))
 フィルハンドルで下にコピー

 G3の数式も同じ考え方です。

 (ラデツキー)

 >順番は、元データの数値の小さい方から上にして並べます。
 と言う事ですが
 元データが、最初から小さい順に並んでいる
 (上から並べて行けば自然と順番になる)のと
 並んでいない
 (振り分け中、あるいは振り分け後に並べ替えが必要)のと
 では、難易度が変わってくると思います。

 また、順番や品番のなかでの重複の有無等。

 もう一度明確にして頂ければと思います。

 (HANA)

 元データの順に上から下へ並んでいれば問題ありません。
 (グループAとグループBに振り分けられた時に並んでいればOK)

 順番には重複はありませんが品番には重複があります。
 しかし、重複していても表示します。

 つまり元データが200あれば
 振り分けられた後のデータも200あるということです。

 引き続きおねがいします。

	[A]	[B]	[C]	[D]	[E]	[F]	[G]	[H]	[I]	[J]	[K]	[L]	[M]
[1]	順番	品番	grA	grB		grA	grB		グループ	A		グループ	B
[2]	1	A-11	1			品番	品番		順番	品番		順番	品番
[3]	2	B-11	2			A-11	C-32		1	A-11		3	C-32
[4]	3	C-32		3		A-43	B-42		2	B-11		6	B-42
[5]	4	A-43	4			C-23			4	A-43			
[6]	5	C-23	5			B-11			5	C-23			
[7]	6	B-42		6					200	B-11			
[8]	200	B-11	200										
[9]													
[10]													
 作業列を二つ使います。
 A:B列に元データ
 F:G列にそれぞれのグループの品番を配置してください。

 C2
=IF(COUNTIF(F$3:F$6,$B2),$A2,"")
 D2
=IF(COUNTIF(G$3:G$6,$B2),$A2,"")
 I3
=IF(COUNT($C$1:$C$200)<ROW(A1),"",SMALL($C$1:$C$200,ROW(A1)))
 J3
=IF(I3="","",VLOOKUP(I3,$A$1:$B$200,2,FALSE))
 L3
I3の式の内、C1:C200をD1:D200に変更した物
 M3
J3セルをコピーして、貼り付け

 (HANA)

 J3セルをコピーして、貼り付け
 を実行しましたがgrAの品番が出てきました。

 自分なりに考え
 =IF(I3="","",VLOOKUP(I3,$A$1:$B$200,2,FALSE))の
 I3のところをL3に変更してみたところできました。

 思っていた通りの結果ができました。
 どうもありがとうございました。


 >J3セルをコピーして、貼り付け
 J3セル用の式を、J3セルに入れて
 J3セルを選択してコピーして、M3セルに貼り付けると
 数式は勝手に
=IF(L3="","",VLOOKUP(L3,$A$1:$B$200,2,FALSE))
 に変わるのですが。。。。

 J3セルの式を見て
 >I3のところをL3に変更してみたところできました。
 この様に変更してもらって充分です。

 上手く行ったようで良かったです。

 (HANA)

 スミマセン J3セルのコピーがうまくいかなかったので
 J3セルの数式をコピーしていました。

 もう1点追加でお尋ねします。

 順番	品番1   品番2
 1	A-11
 2	B-11
 3	C-32
 4	A-43
 5	C-23
 6	B-42
 7         B-56
 8         A-35
 ・
 ・
 200   B-11

 元データに品番が2列あるものがあります。
 これも同様にgrAとgrBに振り分けたいのです。

 B-56は、Aグループに A-35は、Bグループに
 属する品番とします。


 品番1と品番2は同時に入力されない様ですので
 C2,D2に入れた式のCOUNTIF関数の検索条件部分
 COUNTIF(範囲, 検索条件)
         ココ/~~~~~~~~を
 $B2&$C2 とかにして下さい。

 (HANA)

 またまた説明不足ですみません。

 品番1と品番2は同時に入力されます。
 が、品番1と品番2が重複することはありません。

 再度、ご教授ください。

 どの様になるのかサンプルデータを載せて下さい。

 また、
	[A]	[B]	[C]	[D]
[1]				
[2]				
[3]				
[4]				
[5]				
[6]				
 こんな感じで、どこに何が配置されているか
 (配置したのか)教えてください。

 表組は、エクセルから貼り付けると
 割と簡単に入力できると思います。

 (HANA)

 たびたびすみません。
 順番     品番1 品番2    grA    grB  
 	[A]	[B]	 [C]	 [D]
 [1]	A-11    C-13   [1]C-13	[2]A-21	
 [2]	B-11    A-21	[4]B-22	[3]C-32
 [3]	C-32		[5]A-30	[6]B-42
 [4]	A-43    B-22	[7]B-56 [8]A-35	
 [5]	C-23    A-30	     [9]B-11	
 [6]	B-42                             
 [7]     A-11    B-56               
 [8]   B-11  A-35 
 [9]   B-11                 
 
 順番・品番1・品番2を元データから持ってきます。
 それをgrA・grBに分けます。

 ・手順としては、まず1行目の品番2の方をみてgrAかgrBかを
 判定して振り分けます。
 
  品番2は空欄のときがありますので、そのときだけ品番1をみて
 grAかgrBかを判定して振り分けます。

 品番1と品番2は同じ行で重複することはありません。

 この作業を1行目から200行目まで繰り返し行い、結果を
 grAとgrBにだしたいのです。
 (元データが200あれば、A・B合わせて200になります)

 ・先程の通りgrAとgrBはあらかじめ登録します。

 よろしくお願いします。

                     


 順番の列や、項目の行は無くなったのですか?
 これまでは、順番の列を手がかりに振り分けていたのですが。
 勿論、無いなら無いでその様に考えますが。。。。

 それから、どこへ書き出せば良いのですか?
 作業セルが必要な場合、どこへ作れば良いですか?

 各表の左側に有る[]内の数字が行番号なら
	[A]	[B]	[C]	[D]
[1]	A-11	C-13	C-13	
[2]	B-11	A-21		A-21
[3]	C-32			C-32
[4]	A-43	B-22	B-22	
[5]	C-23	A-30	A-30	
[6]	B-42			B-42
[7]	A-11	B-56	B-56	
[8]	B-11	A-35		A-35
[9]	B-11			B-11
 こんな状態って事になりますが・・・。

 元データとしてのサンプルデータと、配置
 対応表のサンプルデータと、配置
 希望する抽出結果とその配置

 をもう一度明確にして下さい。

 その際、
 メモ帳で作成し貼り付けるか
 エクセルで作成し貼り付け、手直しをせずに
 投稿していただければと思います。

 因みに、最初のご説明から品番2が増えただけで
 品番2を優先で確認して行くのなら、COUNTIF関数の
 検索条件を IF($C2="",$B2,$C2) に変更で
 良いかもしれません。

 (HANA)

おっしゃる通り品番2が増えただけです。以下のようになるかと思います。
  	[A]	[B]	[C]	[D]	[E]	[F]	[G]	[H]	[I] 	[J]	[K]	[L]	[M]	[N]
 [1]	順番	品番1	品番2	grA	grB		grA	grB		グ ループA		グループB	
 [2]	1.0 	A-11	C-13	1.0 			品番	品番		順 番	品番		順番	品番
 [3]	2.0 	B-11	A-21		2.0 		C-13	A-21	 	1.0 	C-13		2.0 	A-21
 [4]	3.0 	C-32			3.0 		B-22	C-32	 	4.0 	B-22		3.0 	C-32
 [5]	4.0 	A-43	B-22	4.0 			A-30	B-42	 	5.0 	A-30		6.0 	B-42
 [6]	5.0 	C-23	A-30	5.0 			B-56	A-35	 	7.0 	B-56		8.0 	A-35
 [7]	6.0 	B-42			6.0 			B-11		 			200.0 	B-11
 [8]	7.0 	A-11	B-56	7.0 						 				
 [9]	8.0 	B-11	A-35		8.0 					 				
 [10]	200.0 	B-11			200.0 				
 E3・F3・K4・L4・N4・O4の各セルに関数が入ることになると思いますが
 各セルの関数をご教授いただければ幸いです。

 お手数かけますが、よろしくお願いします。


 例えば、もう一つ作業列を作って
=IF(B2="",C2,B2)
 等としておけば、後は最初に載せた式の内
 B列を参照していた所を、その列の参照に変える 等で
 そんなに変更無く使えそうに思います。

 前の式から変更して使うなら
 D2
=IF(COUNTIF(G$3:G$7,IF($C2="",$B2,$C2)),$A2,"")
 E2へと、必要行フィルドラッグ。
 J2
=IF(COUNT($D$1:$D$200)<ROW(A1),"",SMALL($D$1:$D$200,ROW(A1)))
 K2
=IF(J3="","",IF(VLOOKUP(J3,$A$1:$C$200,3,FALSE)="",VLOOKUP(J3,$A$1:$B$200,2,FALSE),VLOOKUP(J3,$A$1:$C$200,3,FALSE)))

 M2は、J2のD列がE列を参照したもの
 N2は、K2セルをコピーして貼り付けたもの

 それぞれ必要行フィルドラッグ

 で、どうでしょう。

 (HANA)

  例えば、もう一つ作業列を作って
 =IF(B2="",C2,B2)
 とありますが、下記のような意味でしょうか?
 Eから右の列はとりあえず省略しています。

        品番2用列挿入↓    ↓作業列用列挿入

 	[A]	[B]	[C]	[D]
 [1]	順番	品番1	品番2	
 [2]	1	A-11	C-13	A-11
 [3]	2	B-11	A-21	B-11
 [4]	3	C-32		C-32
 [5]	4	A-43	B-22	A-43
 [6]	5	C-23	A-30	C-23
 [7]	6	B-42		B-42
 [8]	7	A-11	B-56	A-11
 [9]	8	B-11	A-35	B-11
 [10]	9	B-11		B-11

 品番2用のC列と作業列追加のD列の2列が新たに挿入されるということでしょうか?
 この状態でD2セルに=IF(B2="",C2,B2)を
 いれ必要行フィルドラッグしても全て品番1しか表示されません。
 (この時点で、グループA・Bに該当するどちらかの品番が並んでいないと
 いけないと思うのですが)

 よろしくお願いします。

 済みません、品番2が優先ですから
 =IF(B2="",C2,B2)
 ではなく
 IF($C2="",$B2,$C2)
 (↑その上のコメントで書いていた式)ですね。。。

 空白処理も入れて こんな感じに成ります。
  	[A]	[B]	[C]	[D]	[E]	[F]	[G]	[H]	[I] 	[J]	[K]	[L]	[M]	[N]	[O]
 [1]	順番	品番1	品番2	作業列	grA	grB		grA	grB		グループ	A		グループ	B
 [2]	1	A-11	C-13	C-13	1			品番	品番		順番	品番		順番	品番
 [3]	2	B-11	A-21	A-21		2		C-13	A-21	 	1	C-13		2	A-21
 [4]	3	C-32		C-32		3		B-22	C-32	 	4	B-22		3	C-32
 [5]	4	A-43	B-22	B-22	4			A-30	B-42	 	5	A-30		6	B-42
 [6]	5	C-23	A-30	A-30	5			B-56	A-35	 	7	B-56		8	A-35
 [7]	6	B-42		B-42		6			B-11					200	B-11
 [8]	7	A-11	B-56	B-56	7										
 [9]	8	B-11	A-35	A-35		8									
 [10]	200	B-11		B-11		200									
 D2に
=IF(C2="",B2,C2)&""

 これで、品番2に入力が有ればその品番
 無い場合は品番1がD列に表示される事に成ります。

 最初のサンプルでは、A列とB列を使用しましたが
 この状態にすればB列がD列に当たります。

 E2
=IF(COUNTIF(H$3:H$7,$D2),$A2,"")
 F2は、E2をコピー

 K3
=IF(COUNT($E$1:$E$200)<ROW(A1),"",SMALL($E$1:$E$200,ROW(A1)))
 L3
=IF(K3="","",VLOOKUP(K3,$A$1:$D$200,4,FALSE))

 (HANA)


 うまくできました。

 長い間お付き合いありがとうございました。

コメント返信:

[ 一覧(最新更新順) ]


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