アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルで、自動的にランク順に順番を表示させる方法

エクセル2003を使用しています。

T列に名前、U列にその人の点数が表示されています。
これに対し、点数の高い順に自動的に並べ替えてB列に順位、C列に名前を表示させたいです。

同じ点数がある場合、以下の様な表示をしたいです。
1位 Aさん 80点
2位 Bさん 70点
2位 Cさん 70点
4位 Dさん 60点

表示>並べ替えは使用しないで、関数で対応したいです。
分かる方いましたら、お願いします。

A 回答 (6件)

なるべくシンプルな計算式で。



添付図:
S2に
=RANK(U2,U:U)+ROW()/1000
以下コピー。

B2に
=VLOOKUP(SMALL($S:$S,ROW(A1)),$S:$U,COLUMN(),FALSE)
B,C列にコピー。

A2に
=RANK(C2,C:C)
以下コピー,
必要に応じてA列を右クリックしてセルの書式設定の表示形式のユーザー定義で
0位
と設定しておくなど。
「エクセルで、自動的にランク順に順番を表示」の回答画像6
    • good
    • 2
この回答へのお礼

ありがとうござました。
思ったように対応できました。

お礼日時:2010/06/12 12:02

補助列を使わずに関数で表示するなら以下のような数式を入力し下方向にオートフィルします。



C2セル
=LARGE($U$2:$U$100,ROW(A1))

B2セル
=INDEX(T:T,SMALL(IF($U$1:$U$100=C2,ROW($U$1:$U$100)),COUNTIF(C$1:$C2,C2)))

B2セルの数式は配列数式ですので、入力後Ctrl+Shift+Enterで確定してください。
    • good
    • 3
この回答へのお礼

今回は「簡単そう」という理由でNO6様の方法を使用させて頂きました。
ですが、わざわざ投稿して頂いてありがとうござました。

お礼日時:2010/06/12 12:04

こんばんは!


参考になるかどうか判りませんが・・・
↓の画像で説明させていただきます。
作業用の列を2列設けています。
作業列V2セルに
=IF(U2="","",RANK(U2,$U$2:$U$100))
(単純にランク表示です)

W2セルに
=IF(U2="","",COUNTIF($U$2:$U$100,">"&U2)+COUNTIF($U$2:U2,U2))
(同得点の場合に無理矢理ランク付けするためです。上の行の人が上位になります)

このV2・W2セルを範囲指定し、W2セルのフィルハンドルで下へずぃ~~~!っとコピーします。

そして、B2セルに
=IF(COUNT($U$2:$U$100)<ROW(A1),"",INDEX($V$2:$V$100,MATCH(ROW(A1),$W$2:$W$100,0)))

C2セルに
=IF(COUNT($V$2:$V$100)<ROW(A1),"",INDEX($T$2:$T$100,MATCH(ROW(A1),$W$2:$W$100,0)))
という数式を入れ、B2・C2セルを範囲指定し、C2セルのフィルハンドルで下へコピーすると
画像のような感じになります。

尚、数式は100行目まで対応できるようにしていますが、
データ量によって範囲指定の領域はアレンジしてみてください。

作業用の列を使っていますので、目障りならこの2列を非表示にしても良いかと思います。

以上、参考になれば良いのですが
他に良い方法があれば読み流してくださいね。m(__)m
「エクセルで、自動的にランク順に順番を表示」の回答画像4
    • good
    • 0
この回答へのお礼

今回は「簡単そう」という理由でNO6様の方法を使用させて頂きました。
ですが、わざわざ投稿して頂いてありがとうござました。

お礼日時:2010/06/12 12:05

ちょっと補足ですが


点数の列はLARGE(U:U,順位)と指定すれば表示されます。
単位については書式設定でユーザー定義→0"点"というように設定すると楽に作れます。
    • good
    • 1
この回答へのお礼

今回は「簡単そう」という理由でNO6様の方法を使用させて頂きました。
ですが、わざわざ投稿して頂いてありがとうござました。

お礼日時:2010/06/12 12:05

まず


順位は関数というよりVBAで求めることになると思います。

要素がいくつあるかは不明ですか。
    • good
    • 1

S2セルに =RANK(U2,U:U)


下へオートフィル
V2セルに =S2+COUNTIF($S$2:S2,S2)-1
下へオートフィル

A2:C2セル範囲を選択して
数式バーに
=INDEX($S:$U,MATCH(ROW(A1),$V:$V,0),{1,2,3})&{"位","","点"}
[Ctrl]+[Shft] +[Enter] で確定、配列数式です({}で囲まれる)
下へオートフィル
(別に配列数式にする必要はないですが、計算の重複を避けただけです)
添付図参照

同点の場合、行番号の小さい人が上になります
「エクセルで、自動的にランク順に順番を表示」の回答画像1
    • good
    • 0
この回答へのお礼

今回は「簡単そう」という理由でNO6様の方法を使用させて頂きました。
ですが、わざわざ投稿して頂いてありがとうござました。

お礼日時:2010/06/12 12:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!