• ベストアンサー

excelでテストのランキングの表を作りたい

excel2003で100人ほどのテストの点数のランキングの表を作りたいです。 元の表として「氏名」「点数」「順位」の項目をつくり、氏名、点数は手入力で、順位はRANKという関数で順位を与えました。 そして、その中で上位30位を別の表として「順位(1位から30位)」「点数」「氏名」という項目を作り表作成したいんですけど 点数に該当する氏名の表示方法がわかりません。 ・「順位」→RANKで1位から、30人分を表示(元の表の点数を変えると順位も変わる) ・「点数」→LARGEで点数の高い順に表示(元の表の点数を変えると順位も変わる) ・「氏名」→その点数に該当する氏名を表示する方法がわかりません。また、同じ点数が数名いる場合に氏名が重複しないようにするにはどうすればいいでしょうか。 エクセル初心者です。よろしくお願いします。 わかりにくい説明ですいません、何かあったら補足で説明いたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

◆6人のランキング表から上位3位までを表示しています ◆Sheet1     A       B     C 1   氏名     点数  順位 2  大阪 太郎   88    1 3  神戸 次郎   77    4 4  京都 春子   82    2 5  奈良 三郎   65    5 6  三重 秋子   82    2 7  山口 四郎   63    6 ◆Sheet2    A    B     C 1  順位  点数   氏名 2   1   88   大阪 太郎 3   2   82   京都 春子 4   2   82   三重 秋子 A2=IF(SMALL(Sheet1!C:C,ROW(A1))>3,"",SMALL(Sheet1!C:C,ROW(A1))) B2=IF(A2="","",LARGE(Sheet1!B:B,ROW(A1))) C2=IF(A2="","",INDEX(Sheet1!A:A,SUMPRODUCT(LARGE((Sheet1!$B$2:$B$200=B2)*(ROW($B$2:$B$200)),COUNTIF($B$2:B$200,B2)-COUNTIF($B$2:B2,B2)+1)))) ★共に下にコピー

aisenyou
質問者

お礼

回答ありがとうございます。 Sheet2の表は私の思っている出来上がりの表そのもので、とても助かります。それにしても結構難しいんですね式を見てもわからないところだらけでした^^; 1つ質問なんですが、教えていただいたC2の式で、範囲指定に、「$B$2:$B$200」と2~200までの行を指定しているのはどうしてですか?そこを「B:B」としてもよいのでしょうか?

その他の回答 (1)

  • sige1701
  • ベストアンサー率28% (74/260)
回答No.2

No1さんの表をお借りして ◆Sheet1     A       B     C   D 1   氏名     点数  順位 2  大阪 太郎   88    1    1 3  神戸 次郎   77    4    4 4  京都 春子   82    2    2 5  奈良 三郎   65    5    5 6  三重 秋子   82    2    3 7  山口 四郎   63    6    6 D列を作業用列とします D2=COUNTIF($C$2:C2,C2)+C2-1 ◆Sheet2    A    B     C          1  順位  点数   氏名 2   1   88   大阪 太郎 3   2   82   京都 春子 4   2   82   三重 秋子 A2=INDEX(Sheet1!A:A,MATCH(ROW(A1),Sheet1!$D:$D,0)) 必要範囲にコピー

aisenyou
質問者

お礼

回答ありがとうございます。 式が短くなってわかりやすいです。是非参考にさせていただきます。 ちなみに、No.1さんと結果は同じですが、内容に違いはあるのでしょうか?

関連するQ&A