エクセルで自動的に高い数字順に並べる事に関する質問です。


http://pc.nikkeibp.co.jp/article/NPC/20060213/229138/
上のHP(常に並べ替えられた表を作成する)の図6に
同じ数値が複数の場合は正しく表示されないとあるのですが、
正しく表示するにはどうしたらよいのでしょうか。
なるべく簡単なやり方があれば嬉しいです。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/08/19 20:27:53
  • 終了:2011/08/24 16:27:43

回答(2件)

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492011/08/19 21:13:41

ポイント200pt

”同点の場合は生徒番号順にするといったような決まり事”を決めておけば対応可能です

生徒番号が1から99までの範囲であるとすれば、例えば点数を100倍したものから生徒番号を引きます

そうすれば同点であっても、生徒番号の違いで差が出ます

 ABCDE
1ランク生徒番号氏名得点生徒番号で調整した得点
2=RANK(E2,$E$2:$E$5)1田中75=D2*100-B2
3=RANK(E3,$E$2:$E$5)2鈴木89=D3*100-B3
4=RANK(E4,$E$2:$E$5)3佐藤89=D4*100-B4
5=RANK(E5,$E$2:$E$5)4黒澤94=D5*100-B5

  

コメント欄を受けての追記:

ROW()でよければ次のような感じです

 ABCD
1ランク氏名得点ROW()で調整
2=RANK(D2,$D$2:$D$5)田中75=C2*100-ROW()
3=RANK(D3,$D$2:$D$5)鈴木89=C3*100-ROW()
4=RANK(D4,$D$2:$D$5)佐藤89=C4*100-ROW()
5=RANK(D5,$D$2:$D$5)黒澤94=C5*100-ROW()

 

コメント欄を受けての追記その2:

>別シートで自動的に点数が高いものから表示

前述のROW()でランク調整したシートがSheet1であれば別のシートに下記のような具合に書きます

(Sheet1!セル範囲という書き方にすれば別シートを参照できます)

 ABC
1順位氏名得点
21=VLOOKUP(A2,Sheet1!$A$2:$B$5,2,FALSE)=VLOOKUP(A2,Sheet1!$A$2:$C$5,3,FALSE)
32=VLOOKUP(A3,Sheet1!$A$2:$B$5,2,FALSE)=VLOOKUP(A3,Sheet1!$A$2:$C$5,3,FALSE)
43=VLOOKUP(A4,Sheet1!$A$2:$B$5,2,FALSE)=VLOOKUP(A4,Sheet1!$A$2:$C$5,3,FALSE)
54=VLOOKUP(A5,Sheet1!$A$2:$B$5,2,FALSE)=VLOOKUP(A5,Sheet1!$A$2:$C$5,3,FALSE)

 

余談

今回の目的がExcelの学習なのかそれとも実用なのか判りかねますので詳細は避けますが、別シートへの出力でよければデータベースクエリという便利なものがありますので、お時間あれば調べてみてください

id:taknt No.2

きゃづみぃ回答回数13537ベストアンサー獲得回数11982011/08/19 22:31:20

別シートに順位を表示させる場合は

VLOOKUPにシートを参照する文字列を入れればいいだけです。


=VLOOKUP(1,Sheet1!$A$2:$C$5,2,FALSE)


たとえば Sheet1の場合は

Sheet1!

を 追加させます。

  • id:taknt
    原因は簡単にわかりますが、対処方法はないですね。
    そもそも 同一順位の場合、どちらを 先にするかも問題ですし。
  • id:s_satani
    r_sasagawa 2011/08/19 21:21:55
    記載のHPにはROW関数を使えば、対応できると書いていましたので。
    順番はどちらが先でもいいのですが、
    今のやり方だと同じ点数が来た場合に下記のようになってしまうのです。

    このデータを自動表示で  こうしたいのですが、  こうなってしまうのです。
    村田 70         佐藤 98        佐藤 98 
    山田 95         山田 95        山田 95
    川田 80         川田 80        川田 80
    佐藤 98         山口 80        川田 80
    山口 80         村田 70        村田 70

    ↑ちなみに上記データは随時更新されます。
  • id:s_satani
    r_sasagawa 2011/08/19 21:57:44
    windofjulyさん、
    ありがとうございます。
    この後、

    1 ランク 氏名 得点 ROW()で調整
    2 =RANK(D2,$D$2:$D$5) 田中 75 =C2*100-ROW()
    3 =RANK(D3,$D$2:$D$5) 鈴木 89 =C3*100-ROW()
    4 =RANK(D4,$D$2:$D$5) 佐藤 89 =C4*100-ROW()
    5 =RANK(D5,$D$2:$D$5) 黒澤 94 =C5*100-ROW()

    別シートで
    自動的に点数が高いものから表示するには、
    どのような式を組めばよいのでしょうか。
    よろしくお願いします。
  • id:s_satani
    r_sasagawa 2011/08/20 01:19:23
    windofjulyさん度々質問すみません。
    上の式だとこうなりますよね。

    4 1 田中 75 7499
    2 2 鈴木 89 8898
    2 3 佐藤 89 8897
    1 4 黒澤 94 9396

    ただ、今のシートはこうなっていまして
    田中 75
    鈴木 89
    黒澤 94
    佐藤 89

    これを別のシートもしくは隣に自動的に
    田中 75
    鈴木 89
    佐藤 89
    黒澤 94
    こう表したいのですが、
    できないでしょうか。

    ちなみに元データのこれは随時点数が入れ変わりますので、その時々で自動的に並べ変えたいと考えています。
    田中 75
    鈴木 89
    黒澤 94
    佐藤 89

    ちなみに同じ点数が無かった時は、別シートは
    =SMALL等の関数を使って、
    一旦下のように数字を並べた後、VLOOKUPで名前を横に自動的に表していました。

    75
    89
    89
    94
  • id:windofjuly
    うぃんど 2011/08/20 08:20:06
    回答欄のほうで「別シートで自動的に点数が高いものから表示するには・・・」に対しての追記もしておいた(コメントご投稿から30分くらいはたっていたかもしれません)のですが、変更が伝わってないでしょうか?
  • id:taknt
    >こう表したいのですが、
    >できないでしょうか。

    多分 記述ミスですよ。
    もう一度 やり直してみてください。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません