• ベストアンサー

エクセルの入力式を教えてください。

エクセルでの入力式を教えてください。 下記順位より E列に上位者より氏名が表示されるようにする為の式を教えてください。 よろしくお願いします。      A   B    C    D     E          氏名  順位     アイ   3   →    1位   タチ     カキ   2   →    2位    カキ     サシ   4   →    3位   アイ     タチ   1   →    4位   サシ

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! すでに回答は出ていますので余計なお世話になるかもしれませんが・・・ 同順位の人が複数いる場合の一例です。 (とりあえず100行目まで対応できる数式にしてみました) ↓の画像でE2セルの表示形式はユーザー定義から 0位 としておきます。 E2セルの数式は =IF(COUNT($C$1:$C$100)<ROW(A1),"",SMALL($C$1:$C$100,ROW(A1))) F2セルには =IF(E2="","",INDEX($A$1:$A$100,SMALL(IF($C$1:$C$100=E2,ROW($A$1:$A$100)),COUNTIF($E$2:E2,E2)))) これは配列数式になってしまいますので、この画面からF2セルにコピー&ペーストした後に 数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 最後にE2・F2セルを範囲指定し、F2セルのフィルハンドルで下へオートフィルでコピーすると 画像のような感じになります。 以上、失礼しました。m(__)m

htsan
質問者

お礼

ありがとうございました。

その他の回答 (2)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 回答番号:ANo.1です。  もし、同順位の人間が複数いる場合には、適当な列(例えばG列)を1列、作業列として使用する必要があります。  まず、G1セルに次の数式を入力して下さい。 =IF(ISNUMBER($B1),$B1+COUNTIF($B1:B1,$B1)/COUNTIF($B:$B,$B1),"")  次に、G1セルをコピーして、G2以下に貼り付けて下さい。  次に、D1セルに次の数式を入力して下さい。 =IF(ROW($A1)>COUNT($B:$B),"",INDEX($B:$B,MATCH(SMALL($G:$G,ROW($A1)),$G:$G,0)))  次に、E1セルに次の数式を入力して下さい。 =IF(ROW($A1)>COUNT($B:$B),"",INDEX($A:$A,MATCH(SMALL($G:$G,ROW($A1)),$G:$G,0)))  次に、D1~E1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。  以上です。

htsan
質問者

お礼

ありがとうございました。

htsan
質問者

補足

回答ありがとうございます。 貼り付けで出来たのですが、下記のようアイ、カキが同順位の場合、 順位表示は1,2,2,4と出るのですが、 名前がタチ、アイ、アイ、サシと アイが2つ出てカキが表示されませんでした。 同順位ありえます。 ご回答よろしくお願いします。 アイ 2   1 タチ カキ 2   2 アイ サシ 4   2 アイ タチ 1   4 サシ

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

  順位が同じ人間が複数いる(例えば得点が同じ為に2位が2人いる等)という事がない場合には、1位の氏名を表示させるセルに次の数式を入力した後、そのセルをコピーして、同じ列で、そのセルより下にあるセル範囲に貼り付けると良いと思います。 =IF(ROW(A1)>MAX($B:$B),"",INDEX($A:$A,MATCH(ROW(A1),$B:$B,0)))

関連するQ&A