• ベストアンサー

ExcelのRANK関数で。

こんにちは。宜しくお願い致します。 ゲームの得点を集計するフォームをエクセルで作成しているのですが、 もしも同点のものがあった場合は、順位をより上のセルに入力されているものが上位になるように設定したいのです。 例) B列(得点)  C列(順位) 10       2 20       1 10       3 10       4 と、このような形にしたいのです。 今現在、RANK関数を使用して作成していたのですが、同点の場合に不都合があることに気が付いて、その解決方法がわかりません。 もっとほかの関数を使うべきなのでしょうか? どなたか教えてください。宜しくお願い致します。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

まず、ランク関数で順位を求め、それにそこまで自分と同じ数が幾つあるかを足して-1すればいいのではないでしょうか? =RANK(A1,A:A)+COUNTIF($A$1:A1,A1)-1

yuki1326
質問者

お礼

こちらの方法でも、理想の結果が得られました。 沢山の方法があるのに、気付けない自分がハズカシイ限りです。。。 本当にありがとうございます。

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.6

随時データが増えたり減ったりしないなら 難しいことを考えずとも、連番をオートフィルで振ります 得点+連番でソート オートフィルで連番を振ります。これが求めるものです。

yuki1326
質問者

お礼

連番を振る作業列を増やすっていう解釈でいいのですよね? 確かに、これが一番シンプルな考え方かもしれませんね♪ 今回はちょっと複雑になっても作業列を増やさない方が理想的だったのですが、この方法は色々なところで応用できると思うので、参考にさせて頂きます。 まだまだビギナーな私ですが、エクセルって色々なことができて便利ですね。 この度は本当にありがとうございました。

  • sige1701
  • ベストアンサー率28% (74/260)
回答No.4

=COUNTIF(A:A,">"&A1)+COUNTIF($A$1:A1,A1)

yuki1326
質問者

お礼

理想の結果が求められました! ありがとうございます。 関数の意味がイマイチまだ理解しきれていないですが、 がんばって解読してみます♪

noname#15459
noname#15459
回答No.3

kazedaです関数が間違ってました ↓コレでいけると思います・ =IF(B1="","",RANK(B1,$B$1:$B$4,))

yuki1326
質問者

お礼

質問の仕方がわかり難かったですね。すみません(TT 同じ順位の2を「2・3・4」に振りたかったので、 残念ながら今回はこの方法ではできなかったです。 でも、今まで$って使ったことがなかったので、今回勉強になりました! ご回答くださいまして、ありがとうございました。

noname#15459
noname#15459
回答No.2

=IF(B1="","",RANK(B1,$K$2:$K$5,)) をc列に 下にコピーで 下記のようになります 2 1 2 2

  • EL-SUR
  • ベストアンサー率76% (83/108)
回答No.1

作業列を使ってもよければ、こんな感じ p(..) 仮に作業列を F列とします。 F1: =B1+(1-ROW()/100) F4までコピー データが 100を超える場合は /100 を /1000にする。 この F列の数値で順位をつけます。 C1: =RANK(F1,$F$1:$F$4) C4までコピー

yuki1326
質問者

お礼

想像もつかないやり方でした! 色々な方法があるのですね。 今回はできれば作業列を使わない方法を探していますが、 また別の機会にこの方法を使えるように、しっかり覚えます! ありがとうございました。

関連するQ&A