• ベストアンサー

エクセルの関数でベスト3の名前を表示させたい

過去の質問を色々調べたのですが、分からなかったので教えてください。 現在、次のようなエクセルの表を作っています。     Aさん Bさん Cさん 日計 1日目 10000 6000 1500 17500 2日目 1500 2000 3000 6500 3日目 40000 34000 12000 86000 「日計」の隣に(その日の)1位~3位の人の名前を参照させるような関数はないでしょうか? RANK関数で順位を挿入するようなスペースが無いので、何かいい方法があれば教えてください。

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

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

一例です。 =INDEX($B$1:$D$1,MATCH(LARGE($B2:$D2,COLUMN(A1)),$B2:$D2,0))

hasep
質問者

お礼

ご回答ありがとうございます。 MATCH以降の指示がわからなかったので、とても参考になりました。

その他の回答 (3)

noname#204879
noname#204879
回答No.4

   A   B    C    D    E        F 1     Aさん Bさん Cさん 日計   1位 / 2位 / 3位 2 1日目  10000  6000  1500 17500  Aさん/Bさん/Cさん 3 2日目  1500  2000  3000  6500  Cさん/Bさん/Aさん 4 3日目  40000  34000  12000 86000  Aさん/Bさん/Cさん 5 F2: =OFFSET(A$1,,RANK(B2,$B2:$D2))&"/"&OFFSET(A$1,,RANK(C2,$B2:$D2))&"/"&OFFSET(A$1,,RANK(D2,$B2:$D2))

hasep
質問者

お礼

ご回答ありがとうございます。 1つのセルに1名ずつ表示させるイメージでしたので、少し違うかもしれません。 ですが、今後の参考にさせていただきます。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.3

初めまして… かな ちょっと考えてみたので試して頂けますでしょうか?      列      A   B   C   D   E   F   G   H 行 1    Aさん Bさん Cさん 日計   2 1日目 10000 6000 1500 17500   3 2日目 1500 2000 3000 6500   4 3日目 40000 34000 12000 86000 と、仮に表が配置していると仮定して F2に =OFFSET($A$1,0,MATCH(LARGE($B2:$D2,COLUMN()-COLUMN($E2)),$B2:$E2,0),1,1) と入力して確定(エンター) その後、このF2をF2:H4にコピーしてみてください。 Excelの2007で動作確認を取りましたが 2000以降のどのバージョンでも使える 依存性のない関数ばかりを使用しているので 問題なく      列      A   B   C   D  E    F   G   H 行 1    Aさん Bさん Cさん 日計   2 1日目 10000 6000 1500 17500 Aさん Bさん Cさん   3 2日目 1500 2000 3000 6500 Cさん Bさん Aさん   4 3日目 40000 34000 12000 86000 Aさん Bさん Cさん と、言う結果が得られると思うのですが… 如何でしょうか? お役に立てれば幸いです。

hasep
質問者

お礼

ご回答ありがとうございます。 私が質問時に不足していたセルの位置関係をご理解いただき、イメージどおりの回答をいただけました。 がんばって数式を理解させていただきます。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

1位 F2=INDEX($B$1:$D$1,1,MATCH(LARGE($B2:$D2,1),$B2:$D2,0)) 2位 G2=INDEX($B$1:$D$1,1,MATCH(LARGE($B2:$D2,2),$B2:$D2,0)) 3位 H2=INDEX($B$1:$D$1,1,MATCH(LARGE($B2:$D2,3),$B2:$D2,0)) で下方にコピー 注意、同じ金額の場合は列の左にある名前が表示されます。

hasep
質問者

お礼

ご回答ありがとうございます。 基本的にはNo.1さんと同じですね。

関連するQ&A