[[20071016160019]] 『1行とびの並び替え』(ままん) ページの最後に飛ぶ

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

 

『1行とびの並び替え』(ままん)
 お久しぶりにお世話になります。
 例えば
 
   A     B      C 
 1 田中  実績     10

 2 田中  昨年実績    15 

 3 鈴木  実績     13

 4  鈴木  昨年実績    24

 という表があります。わかりずらいですが、2列ごとで1人の成績入力欄になっています。
 今回質問したいのは、各2行目の「昨年実績」のみを並べ替えしたいのです。
 データ→並べ替え でやると、「実績」の数値も一緒に並べ替えられてしまいます。
 ちなみに実際はもっと人数があるので、一つ一つ並べ替えてはいられません。
 もし何か適切な方法があれば、教えていただけないでしょうか?宜しくお願いします。


 表の例題を10行ぐらい記載し、
 その結果としてどの様になればいいのかを記載下さい

  作業列が使えるなら、D1 に  =IF(B1="昨年実績",C1,"") として下へコピーし

   A     B      C     D
 1 田中  実績     10
 2 田中  昨年実績    15    15
 3 鈴木  実績     13
 4  鈴木  昨年実績    24    24

 という形にし、D列を基準に並べ替え、でしょうか。氏名がバラバラになりますが。

 ただ、表の構成が、処理しにくい形です。データ処理をするなら
 
   A     B    C
 1 氏名    実績    昨年実績
 2  田中    10    15
 3 鈴木   13    24

 のように、「1レコード(1件のデータ)を1行に」が基本です。
 このようなデータなら、いろんな処理がしやすいです。

 (P)


 >>No.2の名無しさんへかしこまりました!

   A     B      C    

 1 田中  実績     10   

 2 田中  昨年実績    15    

 3 鈴木  実績     13

 4  鈴木  昨年実績    24

 5 木村  実績     17

 6 木村  昨年実績    36 

 7 田村  実績     18

 8  田村  昨年実績    29

 9 佐藤  昨年実績    20 

 10 佐藤  実績     33

 11 鈴木  昨年実績    16

 上記が下記のように、「昨年実績」の行のみC列の数値で並べ替えたいのです。

   A     B      C    
 6 木村  昨年実績    36

 8  田村  昨年実績    29

 4  鈴木  昨年実績    24

 9 佐藤  昨年実績    20

 11 鈴木  昨年実績    16

 2 田中  昨年実績    15

 宜しくお願いします。

 >>Pさんご指摘ありがとうございます。
 実は上司が作成したデータを元にしなくてはならないので、私も表の構成変だなぁと思いながら
 処理をしていました。ちょっといまからだと手遅れなくらいデータが入っているので、
 今後頼まれたら最初から作成しなおしてみます。アドバイスどうもです!

 (ままん)

 並び替えで出来そうですが...
 最優先されるキー   :列B
 2番目に優先されるキー:列C
 これで並び替えすると出来ません?
 (1or8)

 ちょっと面倒ですが、一例です。
 1. 一行目に行挿入し、各列に見出しを付けます。※D列は並び替え用の作業列
       A            B        C        D
  1  担当	年度	実績数	並び替え
  2  田中	実績	10

 2. 【挿入】-【ワークシート】で新規シートを用意します。
     今回の例では、新規シートは、Sheet10 です。

 3. 一行目でフィルタを掛け、B列『昨年実績』で抽出し、それをコピーし、新規シートに貼り付けます。
    新規シートでは、↓こんな感じ。
        A          B        C
   1   担当	年度	実績数
   2   田中	昨年実績	15
   3   鈴木	昨年実績	24
   4   木村	昨年実績	36
   5   田村	昨年実績	29
   6   佐藤	昨年実績	20
   7   鈴木	昨年実績	16

 4.元シートのD2セルに↓の式を入れ、下方コピー。
 =IF(B2="実績",ROW(C2),RANK(C2,Sheet10!$C$2:$C$7)*2+1)

 5.D列を基準に並び替えする。
  で、おしまい。。。
  ※9行目と10行の 実績と昨年実績が逆なのが気にはなりますが、書き間違いとして考えてます。
(sin) 意図通りであればいいのですが?

 補足です。
 A1:C11 を選択して並び替えです。
 (1or8)

 (1or8)さんの回答ではだめなのかな

 >データ→並べ替え でやると、「実績」の数値も一緒に並べ替えられてしまいます。
 この部分はどうなればいいのかな

 >「昨年実績」の行のみC列の数値で並べ替えたいのです。

 と、例を挙げられていますが、この例の結果では「実績」のデータがありません。
 「実績」のデータはどうなればいいのでしょう?

 ○「実績」のデータはいらないので、「昨年実績」で並べ替えたものだけがほしい

 ○「実績」のデータは「昨年実績」で並べ替えたものと別のところに、順番を変えずに
    固まっていればよい

  田中  実績   10	
  鈴木  実績   13	
  木村  実績   17	
  田村  実績   18	
  佐藤  実績   33	
  木村  昨年実績 36 36
  田村  昨年実績 29 29
  鈴木  昨年実績 24 24
  佐藤  昨年実績 20 20
  鈴木  昨年実績 16 16
  田中  昨年実績 15 15

  (先にお示しした方法ではこうなります)

 ○その他

 ※その他の場合は、「実績」のデータも合わせて例示していただかなくてはわかりません。

 (P)


 良く分かりませんが
 前	A	B	C	      	 後	A	B	C
1	田中	実績	10	←そのまま→	1	田中	実績	10
2	田中	昨年実績	15	      	6	木村	昨年実績	36
3	鈴木	実績	13	←そのまま→	3	鈴木	実績	13
4	鈴木	昨年実績	24	      	8	田村	昨年実績	29
5	木村	実績	17	←そのまま→	5	木村	実績	17
6	木村	昨年実績	36	      	4	鈴木	昨年実績	24
7	田村	実績	18	←そのまま→	7	田村	実績	18
8	田村	昨年実績	29	      	9	佐藤	昨年実績	20
9	佐藤	昨年実績	20	      	11	鈴木	昨年実績	16
10	佐藤	実績	33	←そのまま→	10	佐藤	実績	33
11	鈴木	昨年実績	16	      	2	田中	昨年実績	15
 こう言ったことですかね?
 「実績」の行はそのままで「昨年実績」の行にだけ着目して
 該当行だけ並べ替えを行いたい。

 気になるのはsinさんのご指摘もありますが
  (1)9行目と10行目の項目が逆になっている
  (2)11行目の鈴木さんが片方の項目しかない
 と言う点ですが、記載ミスと考えて良いのですかね?

 とりあえず、2行で一人分のデータで、1行おきに昨年実績が入っているとき
 作業列を2列使って、並べ替えのキーを作る方法です。
	[A]	[B]	[C]	[D]	[E]		[F]
[1]	番号	A	B	C	作業列1		作業列2
[2]	1	田中	実績	10			0.5
[3]	2	田中	昨年実績	15	14.9998		5
[4]	3	鈴木	実績	13			1.5
[5]	4	鈴木	昨年実績	24	23.9996		3
[6]	5	木村	実績	17			2.5
[7]	6	木村	昨年実績	36	35.9994		1
[8]	7	田村	実績	18			3.5
[9]	8	田村	昨年実績	29	28.9992		2
[10]	9	佐藤	実績	33			4.5
[11]	10	佐藤	昨年実績	20	19.999		4
 E2に
=IF(C2="昨年実績",D2-ROW(A1)/10000,"")
 F2に
=IF(E2="",ROW(A1)/2,RANK(E2,$E$2:$E$11))
 を入力して、11行目までコピー。

 F列を昇順で並べ替えます。

 (HANA)

    A     B      C          D      E     F     G        H       I
1   6   木村   昨年実績	36	     6	木村   昨年実績	36
2  10   佐藤   実績	33	     8	田村   昨年実績	29
3   8   田村   昨年実績	29	     4	鈴木   昨年実績	24
4   4   鈴木   昨年実績	24	     9	佐藤   昨年実績	20
5   9   佐藤   昨年実績	20	    11	鈴木   昨年実績	16
6   7   田村   実績	18	     2	田中   昨年実績	15
7   5   木村   実績	17					
8  11   鈴木   昨年実績	16					
9   2   田中   昨年実績	15					
10  3   鈴木   実績	13					
11  1   田中   実績	10	

 昨年実績をF列以降に抽出する方法です。

 F1=IF(COUNTIF($C$1:$C$11,"昨年実績")<ROW(A1),"",INDEX(A$1:A$11,SMALL(IF($C$1:$C$11="昨年実績",ROW($A$1:$A$11)),ROW(A1))))
 配列数式です。Ctrl + Shift + Enter で確定 ({=式}の形になります)
 F1をI1までフィルコピーして、F1:I1を選択後フィルダウンします。

 ※D列を降順ソート
 ※必要あればF,I列を「形式を選択して貼り付け」の値にチェックを入れて別シートにでもコピー貼り付けします。
   その後、A列を昇順ソートすれば元にもどります。ご参考まで(gon-2)


 もしも
  今年の実績 1位
  昨年の実績 1位
  今年の実績 2位
  昨年の実績 2位
  ・・・・
 の様に並べばよいのであれば
  1. 最優先されるキー   :「実績」「昨年実績」の列
    2番目に優先されるキー:実績が入力された列
   で並べ替え
  2.実績の固まり先頭から最後まで一番から順に番号を振る。
   昨年実績の固まりの先頭から最後まで1番から順に番号を振る。
  3.上で番号を振った列で並べ替え
 でも良さそうですね。

 ・・・と思ってみましたが、「実績」の数字が降順で並んでいる訳では
 無いようですね。

 (HANA)

 ちょっと勘違いしていたようですね!
 失礼しました。m(__)m
 (1or8)

 みなさんありがとうございます!今ご意見・アドバイスを拝見しました。
 これから実行させていただきますので、不明な点がありましたら
 また続きに書き込みします!しばらくお待ちくださればありがたいです。

 ☆追記☆

    A       B         C       D        E

 1      「個人別実績表」

 2    (空白のスペース行です)

 3                 8月   9月   累計    月平均

 4 類家	 久慈      実績	302,619  ・・・    ***    @@@
 5		   前年	259,172  ・・・    +++    @@@
 6	 三浦	   実績	150,135  ・・・    ***    @@@
 7		   前年	227,016  ・・・    +++    @@@
 8	 木村	   実績	122,612  ・・・    ***    @@@
 9		   前年	0     ・・・    +++    @@@
 10	 田中	   実績	952    ・・・    ***    @@@
 11		   前年	28,925   ・・・    +++    @@@
 12	 鈴木	   実績	21,315   ・・・    ***    @@@
 13		   前年	0     ・・・    +++    @@@
 14	 佐藤	   実績	0     ・・・    ***    @@@
 15		   前年	567    ・・・    +++    @@@
 16	佐々木    実績	0     ・・・    ***    @@@
 17	 	   前年	0     ・・・    +++    @@@

 体裁変更し、上記のようにしてほしいと今朝頼まれました。みなさん申し訳ありません・・
 せっかく最初のわかりづらい表で頑張ってくださったのに申し訳ないです。。
 もし宜しければ、上記の場合の並べ替え方法を伝授してくださいませんか?

 ○Aの4:17までセル結合してあります。

 ○B列の4:5でセル結合、6:7でセル結合となっています。

 ○D以降は8月〜1月まであります。

 ○昨年実績の多い者から順に並べ替えたい。並べ替えたらB列の氏名も一緒に並べ替え
   られるとなお良い。  
 ※B列が結合してあるので、私自身いろいろ試してみましたが、私の知識範囲では不可能でした笑

 ○できれば実績も並べ替えたい。
  (前年と同時に並べ替えられなくても良いので、実績と前年の数値が多い者の順がわかれば良いらしいです。)

 もしご教授くださればありがたいです。その際確認したい点があるときこちらに書き込んで
 頂ければ、すぐ追記いたします。大変お手数おかけいたしますが、どうか宜しくお願いいたします。

(ままん)


 累計で並べ替えるのですか?
 それとも固有の月単位ですか?8月と指定したら8月を並べかえる。
 別シートに表示するのですか?

 並べ替えたあとの表見本をご提示できませんか?

 ※B列が結合してあるので・・・
  結合しないで総てに氏名を入れておいて、1行おきにフォントを白色にしておくといいのにね。それは恐らくNGなのでしょう。(gon-2)


 >>累計で並べ替えるのですか?

 A.累計で並べ替えたいでのです。可能でしょうか?

 >>別シートに表示するのですか?

 A.別シートでも問題ありません。ただこのシートで並べ替えられればとても助かります。
  このシートを使用するのはPCの知識がほとんどない上司なので、できるだけ簡単な方法であれば
  あるほどうれしいです。

 >>結合しないで総てに氏名を入れておいて、1行おきにフォントを白色に・・・

 A.そうなのです・・・心境をご察し頂けて幸いです。全てに氏名入力→フォントを白色に設定
   データ→並べ替えでしたら何の問題もなく皆さんを困惑させなくて済んだのですよね;

 【見本】

    A       B         C       D        E

 1      「個人別実績表」

 2    (空白のスペース行です)

 3                 8月   9月   累計    月平均

 4 類家	 久慈      前年	259,172  ・・・    +++    @@@
 5	 三浦	   前年	227,016  ・・・    +++    @@@
 6	 田中	   前年	28,925   ・・・    +++    @@@
 7	 佐藤  	   前年	567    ・・・    +++    @@@
 8	 木村	   前年	0     ・・・    +++    @@@
 9	 鈴木	   前年	0     ・・・    +++    @@@
 10	 佐々木	   前年	0     ・・・    +++    @@@

 上記のように、累計で前年の数値が高い順に並べ替えて今年の実績と比較させたいのです。
 可能であれば今年度の実績(実績=今年度の実績  前年=前年度の実績)も
 累計数値の高い順に並べ替えられればとても助かります。

 言葉で伝わりにくいかと思いますが、
 オートフィルのように前年のみを抽出→前年の数値が高い順に並べ替え
 とすれば、行間に今年度の実績が入らずに見やすいかと考えていました。

 又何か不明な点がありましたらお返事お願いします。
 (ままん)

 衝突してしまいました。お返事を待たずに勝手に作成していました。

 【Sheet-1】
   A     B     C      D       E       F        G      H      I      J      K
1「個人別実績表」
2
3             8月   9月    累計    月平均  作業-1 作業-2 作業-3 作業-4
4 類家 久慈  実績	 302,619	 1,000  303,619  151,810  久慈  302619          2
5	     前年	 259,172	 1,500  260,672  130,336  久慈  259172    3	
6       三浦  実績	 150,135	 4,000  154,135	77,068  三浦  150135          5
7	     前年	 227,016	 4,500  231,516  115,758  三浦  227016    4	
8       木村  実績	 122,612	 3,000  125,612	62,806  木村  122612          6
9 	     前年	       0	 3,500	 3,500	 1,750  木村	 0	
10      田中  実績	     952	   100	 1,052	   526  田中     952	   9
11	     前年	  28,925	   150	29,075	14,538  田中   28925    7	
12   鈴木 実績  21,315	  500	21,815	10,908  鈴木   21315	   8
13	     前年	       0	   550	   550	   275  鈴木	 0	
14      佐藤  実績       0	     0	     0	     0  佐藤	 0	
15	     前年  567000	     0  567,000  283,500  佐藤   567000   1	
16    佐々木  実績       0	10,000   10,000	 5,000  佐々木	 0	
17 	     前年       0	 15000	15,000	 7,500  佐々木	 0	

 H4=INDIRECT("B"&INT(ROW()/2)*2)					
 I4=INDEX($D$4:$G$17,ROW(A1),MATCH(Sheet2!$B$1,$D$3:$G$3))	
 J4=IF(OR(C4="実績",I4=0),"",RANK(I4,$I$1:$I$17))			
 K4=IF(OR(C4="前年",I4=0),"",RANK(I4,$I$1:$I$17))
 フィルダウン

 【Sheet-2】
     A        B
1   前年	    8月
2   佐藤	  567,000
3   久慈	  259,172
4   三浦	  227,016
5   田中	   28,925
6	

 A2=IF(COUNT(Sheet1!$J$4:$J$17)<ROW(A1),"",INDEX(Sheet1!$H$4:$H$17,MATCH(SMALL(Sheet1!$J$4:$J$17,ROW(A1)),Sheet1!$J$4:$J$17,0)))	
 B2=IF(COUNT(Sheet1!$J$4:$J$17)<ROW(B1),"",INDEX(Sheet1!$I$4:$I$17,MATCH(SMALL(Sheet1!$J$4:$J$17,ROW(B1)),Sheet1!$J$4:$J$17,0)))	
 フィルダウン

 【Sheet-3】
    A        B
   実績	   8月
1  久慈	  302,619
2  三浦	  150,135
3  木村	  122,612
4  鈴木	   21,315
5  田中	      952	

 B1=Sheet2!B1	
 A2=IF(COUNT(Sheet1!$K$4:$K$17)<ROW(A1),"",INDEX(Sheet1!$H$4:$H$17,MATCH(SMALL(Sheet1!$K$4:$K$17,ROW(A1)),Sheet1!$K$4:$K$17,0)))	
 B2=IF(COUNT(Sheet1!$K$4:$K$17)<ROW(B1),"",INDEX(Sheet1!$I$4:$I$17,MATCH(SMALL(Sheet1!$K$4:$K$17,ROW(B1)),Sheet1!$K$4:$K$17,0)))
 フィルダウン

 ※Sheet-2のB1セルで月or累計を指定します。(入力規則リストがベター)
 ※Sheet-2に前年、Sheet-3に実績が抽出されます。

 ご参考までに (gon-2)	

 >このシートで並べ替えられればとても助かります。
 並べ替え機能のように同一場所での表示は無理かと思います。

 見た目の体裁を考えると作業列1,2,3,4を別シートにして、H列以降もしくは表の下に抽出表を作成するのもいいかと思います。

 もし、gon-2のを参考にするとお思いで疑問点があればレスしてください。(gon-2)

 ※同じ金額で順位がダブルと困りますので
   J4=IF(OR(C4="実績",I4=0),"",RANK(I4,$I$1:$I$17)+COUNTIF($I$4:I4,I4)-1)
   K4も同様に


 ありがとうございます!
 なんとかちょうど良い体裁にできました^U^
 なんども具体案を出していただき私自身の勉強にもなりました!
 これでもう上司に文句は言われようのないデータです笑

 本当にお世話になりました。また何かつまづいてしまったとき、自分でどうしようもなかったら
 こちらに参上します。日々勉強ですね、ありがとうございました。
 (ままん)

 解決されたご様子ですので、以下は勝手に推測するお遊びです。

 本年の実績が高い順にする。実績の無い月は前年数値を代用する。
を前提として数値の高い順に毎月並び替えを行なう。 ※毎月上位3名には、ご褒美を考えているかも???
 	A	B	C	D	E	F	G	H	I	J	K	L	M
 3				8月	9月	10月	11月	12月	1月	累計	月平均	(担当)	仮累計
 4	類家	久慈	実績	302,619						302,619	302,619	久慈	1,598,479
 5			前年	259,172	259,172	259,172	259,172	259,172	259,172	1,555,032	259,172	久慈	1,598,479
 6		三浦	実績	150,135						150,135	150,135	三浦	1,285,215
 7			前年	227,016	227,016	227,016	227,016	227,016	227,016	1,362,096	227,016	三浦	1,285,215
 8		田中	実績	952						952	952	田中	145,577
 9			前年	28,925	28,925	28,925	28,925	28,925	28,925	173,550	28,925	田中	145,577
 10		佐藤	実績	0						0	0	佐藤	2,835
 11			前年	567	567	567	567	567	567	3,402	567	佐藤	2,835
 12		木村	実績	122,612						122,612	122,612	木村	122,612
 13			前年	0	0	0	0	0	0	0	0	木村	122,612
 14		鈴木	実績	21,315						21,315	21,315	鈴木	21,315
 15			前年	0	0	0	0	0	0	0	0	鈴木	21,315
 16		佐々木	実績	0						0	0	佐々木	0
 17			前年	0	0	0	0	0	0	0	0	佐々木	0

 L・M列が作業列です。
L4セル =IF(B4<>"",B4,B3) とし、下方コピー後、その範囲をコピーし値で保存。
この列は、非表示にしても可。
B4セルに =L4 として下方コピー。 参照にしましたのでC:M列で並べ替えれば、勝手に変ります。

 M4セルに↓の式を入れ、下方コピー。
=IF(C4="実績",J4+IF(COUNTA($D$3:$I$3)-COUNT(D4:I4)=0,0,SUM(OFFSET(D5,0,COUNT(D4:I4),1,COUNTA($D$3:$I$3)-COUNT(D4:I4)))),M3)

 C3:M17セルを選択し、タイトル行:『仮累計』で降順に並び替える。
毎月の実績記入は、B列の担当に合わせて入力(入力順が決っていれば、N列にでもセットしておき、並び替える)
並び替える際は、C3:M17で、必ず行なう。 B列が入ってると怒られちゃいますが。。。
(sin)

コメント返信:

[ 一覧(最新更新順) ]


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