• ベストアンサー

エクセルで

例えばA1~A10に名前 C1~C10に得点があるとします。 E1~10に得点の高い順&得点の低い順に5名づつの名前 を表示させたいのですがうまくいきません。 どなたかお知恵をお貸し下さい。 宜しくお願いします。 

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

  • ベストアンサー
  • sakeman
  • ベストアンサー率43% (67/153)
回答No.5

LARGE関数とSMALL関数で高い順と低い順を抽出し、INDEXとMATCH関数を使用して、名前を表示します。 ROW関数で順位の1~5を取得しています。 セルE1に「=INDEX($A$1:$A$10,MATCH(LARGE($C$1:$C$10,ROW()),$C$1:$C$10,0))」と入力し、セルE5までオートフィルする。 セルE6に「=INDEX($A$1:$A$10,MATCH(SMALL($C$1:$C$10,ROW()-5),$C$1:$C$10,0))」と入力し、セルE10までオートフィルする。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

>E1~10に得点の高い順&得点の低い順に5名づつの名前 順位で5名ということでしたら、私には、うまく行くようには思いません。全てを表示するか、点数で足切りをして表示するか、どちらかだと思います。 例えば、5番目の点数の人が、同点の場合など、5番目に位置する人が複数の場合です。 降順: =INDEX($A$1:$A$10,MOD(LARGE($C$1:$C$10+ROW($A$1:$A$10)/100,ROW(A1)),1)*100,1) 配列数式ですから、一旦入力したら、目的の式にF2を押して、『ShiftとCtrlを押しながらEnterキー』を押します。 昇順: =INDEX($A$1:$A$10,MOD(SMALL($C$1:$C$10+ROW($A$1:$A$10)/100,ROW(A1)),1)*100,1) 同じく、配列数式ですから、配列の確定が必要です。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

以下の方法で如何でしょうか。 高い順(C1~C5=OFFSET($A$1,MATCH(LARGE($C$1:$C$10,ROW()),$C$1:$C$10,0)-1,0) 低い順(C6~C10)⇒=OFFSET($A$1,MATCH(SMALL($C$1:$C$10,ROW()-5),$C$1:$C$10,0)-1,0)

  • oyaji-2
  • ベストアンサー率24% (6/25)
回答No.1

Rank関数で順位を求め、Vlookup関数で順位に対応する名前を引用したらどうでしょう。 F列に =Rank(C1,A$1:A$10,True) これで順位が求まります。 G列に =C1 として名前を転記 E1に =Vlookup(F1,F$1:G$10,False) これが1位の人の名前になるはずです。 Rank関数のTrueをFalseにすると低い順になりますので、応用してやってみてください。

  • oyaji-2
  • ベストアンサー率24% (6/25)
回答No.2

Rank関数で順位を求め、Vlookup関数で順位に対応する名前を引用したらどうでしょう。 F列に =Rank(C1,A$1:A$10,True) これで順位が求まります。 G列に =C1 として名前を転記 E1に =Vlookup(F1,F$1:G$10,False) これが1位の人の名前になるはずです。 Rank関数のTrueをFalseにすると低い順になりますので、応用してやってみてください。

専門家に質問してみよう