• ベストアンサー

同じ順位同士をさらに条件をつけて順位付けしたい

EXCELのご相談です。 ゲームなどした時に 同じ順位が複数あった場合(例 1位が3人とか4位が2人など)、条件をつけて1位3人→1位、2位、3位  4位→4位、5位 のようにしたいのですが、どのような数式にしたらいいでしょうか。 添付の図でいいますと、順位(C列)1の人が2~4行の3人、順位4の人が5~6行の2人、順位7の人が8~9行の2人いた場合、同じ順位の中でイが多い人が上位、イの数が同じならばロが多い人が、またイ、ロとも数が同じならば ハの数が多い人が上位としたいのです。

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

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

こんばんは! 一例です。 ↓の画像のように作用用の列を設けます。 作業列I2セルに =IF(A2="","",RANK(C2,C:C)*1000+D2*100+E2*10+F2) という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 そしてG2セルに =IF(I2="","",RANK(I2,I:I)) という数式を入れオートフィルで下へコピーすると 画像のような感じになります。 ※ すべての条件が同じ人がいた場合、G列にも同順位が発生してしまいます。 そこでも順位の差をつけたい場合は、一工夫必要になります。m(_ _)m

perogou
質問者

お礼

簡素な手法よく理解できました。RANKで順位を逆にして数値表示させるなんてすごいですね。どうもありがとうございました。

その他の回答 (1)

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

 今仮に、元データがSheet1に存在しているものとします。  そして、Sheet2のA列を作業列として使用するものとします。  まず、Sheet2のA2セルに次の関数を入力して下さい。 =IF(ISNUMBER(INDEX(Sheet1!$B:$B,ROW())),"#"&TEXT(RANK(INDEX(Sheet1!$B:$B,ROW()),Sheet1!$B:$B),REPT("0",INT(LOG10(COUNT(Sheet1!$B:$B)))+1))&TEXT(INDEX(Sheet1!$D:$D,ROW()),REPT("0",INT(LOG10(MAX(Sheet1!$D:$D)))+1))&TEXT(INDEX(Sheet1!$E:$E,ROW()),REPT("0",INT(LOG10(MAX(Sheet1!$E:$E)))+1))&TEXT(INDEX(Sheet1!$F:$F,ROW()),REPT("0",INT(LOG10(MAX(Sheet1!$F:$F)))+1)),"")  次に、Sheet2のA2セルをコピーして、Sheet2のA3以下に貼り付けて下さい。  次に、Sheet1のG2セルに次の関数を入力して下さい。 =IF(ISNUMBER(INDEX($B:$B,ROW())),COUNTIF(Sheet2!$A:$A,">"&INDEX(Sheet2!$A:$A,ROW()))+1,"")  次に、Sheet1のG2セルをコピーして、Sheet1のG3以下に貼り付けて下さい。  以上です。

perogou
質問者

お礼

ありがとうございました。ずいぶんむずかしそうなのでゆっくり研究してみます。でも「け」行の大きな数値、あえて例として記載していただいたんだとうれしくおもいます。