利用規約の変更について

エクセルにて
A列 氏名
B列 点数 が入った一覧表があります。
B列の点数を比較して、一番点数の多い人の名前をC1に表示したいのですが、どのようにすればよいのでしょうか?
まだまだ勉強中で知っている関数も乏しく、煮詰まってしまいました・・・(--;;
お手数ですが、どなたかご教授願います。

A 回答 (3件)

一例です。


最大点が複数あった場合、前方が抽出されますが如何でしょうか。
=INDEX(A:A,MATCH(MAX(B:B),B:B,0))
    • good
    • 1
この回答へのお礼

早速のご回答ありがとうございます。
INDEXとMATCHの組合せになるのですね。
なるほど、このようにご回答頂くと理解できるのですが、自分で組合わせるにはまだまだ勉強が足りません(TT)ガンバリマス。

お礼日時:2010/12/21 15:46

 作業列を使用せずに、最高得点者の名前を全て表示させる方法です。



 今仮に、B1セルには「得点」と入力されていて、得点のデータはB2~B41に入力されていて、満点の場合の点数が999よりは少ない数であるものとします。
 まず、C1セルに次の数式を入力して下さい。

=IF(ROWS($1:1)>COUNTIF($B:$B,MAX($B:$B)),"",INDEX($A:$A,SUMPRODUCT(ROW($B$2:$B$41)*($B$2:$B$41=MAX($B:$B))*(COUNTIF(OFFSET($B$1,,,ROW($B$2:$B$41)),MAX($B:$B))=ROWS($1:1)))))

 次に、C1セルをコピーして、C2以下に貼り付けて下さい。

 以上です。

 尚、満点が999点よりも多い場合には、数式中の999と記述されている全ての箇所を、満点の点数以上の数に変更して下さい。
 又、人数が一定ではない場合には、次の様な数式に変更して下さい。

=IF(ROWS($1:1)>COUNTIF($B:$B,MAX($B:$B)),"",INDEX($A:$A,SUMPRODUCT(ROW(OFFSET($B$1,,,MATCH(999,$B:$B)))*(OFFSET($B$1,,,MATCH(999,$B:$B))=MAX($B:$B))*(COUNTIF(OFFSET($B$1,,,ROW(OFFSET($B$1,,,MATCH(999,$B:$B)))),MAX($B:$B))=ROWS($1:1)))))
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
なるほど、関数を複数組合わせて、対処できるものなんですね。まだまだ勉強しないといけないですねー(TT)ガンバリマス

お礼日時:2010/12/21 15:56

一番点数が多い人が複数いた場合にはC1セルから下方に表示させるとして、作業列をD列に設けD1セルには次の式を入力して下方にオートフィルドラッグします。



=IF(B1="","",RANK(B1,B:B)+COUNTIF(B$1:B1,B1)/100)

その後にC1セルに次の式を入力して下方にオートフィルドラッグします。

=IF(COUNTIF(D:D,1+ROW(A1)/100)=0,"",INDEX(A:A,MATCH(1+ROW(A1)/100,D:D,0)))

一番点数の多い人が多数いた場合でもそれらの氏名がC列に表示されます。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
なるほど、関数を複数組合わせて、対処できるものなんですね。まだまだ勉強しないといけないですねー(TT)ガンバリマス

お礼日時:2010/12/21 15:55

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


人気Q&Aランキング