• 締切済み

エクセル 条件付け RANK

色々調べてみたのですが判らなかったので簡単かも知れませんが教えてください。 〔例〕 幅跳びにて跳んだ距離測定しランク付けをするときにファールをした人は除外対象にして 順位を付けたい。 すみませんがよろしくお願いします。

みんなの回答

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

 SUMPRODUCT関数を使用して、100行目まで対応させるのでしたら、D2セルに入力する関数を次の様なものにした方が簡単です。 =IF(AND($B2="OK",ISNUMBER($C2)),SUMPRODUCT(($B$2:$B$100="OK")*($C$2:$C$100>$C2))+1,"")  尚、上記の関数を改良して、表が何行あっても(実際には、何千行にもなれば処理が重くなります)、関数を変更せずに対応可能で、且つ、A列~C列のセルに対して、切取りや、削除、挿入等の編集を行っても、セルが上下方向にずれるだけであれば、正常に動作する様にしたい場合には、次の様な関数となります。 =IF(AND(INDEX($B:$B,ROW())="OK",ISNUMBER(INDEX($C:$C,ROW()))),SUMPRODUCT(($B$1:INDEX($B:$B,MATCH(9^9,$C:$C))="OK")*($C$1:INDEX($C:$C,MATCH(9^9,$C:$C))>INDEX($C:$C,ROW())))+1,"")

peace_of_mabi
質問者

お礼

人によって数式の組み方が違う事に少し驚きました。 たぶん自分の使いやすい、考えやすい数式の組み方をしてるのでしょうね、勉強になります。 少しずつ勉強しながら覚えて行き、質問投稿せずに解決できるようにがんばります。 アドバイスありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

一回の幅跳びでランクを付けているのでしたら簡単ですが、公式競技などでは3回の試技があるわけでその時の順位は最長で同じ距離を飛んだ人がいる場合には次の記録を、また次の記録を考慮して順位を付けることが必要となりますね。 表はA2セルから下方に氏名が、B2セルから下方には第1回目の試技の距離が、C2セルには第2回目の試技の距離が、D2セルには第3回目の試技の距離が入力されるとします。 ファールについては0を入力します。 作業列としてE2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNT(B2:D2)=0,"",LARGE(B2:D2,1)*10^7+LARGE(B2:D2,2)*10^3+LARGE(B2:D2,3)) 順位はF列に表示させるとしてF2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(E2="","",RANK(E2,E:E))

peace_of_mabi
質問者

お礼

今後想定される問題解決方法までアドバイスをいただきありがたい限りです。 参考になりました。

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

No.1です。 補足を読ませていただきました。 今回もとりあえず100行目まで対応できる数式にしてみました。 ↓の画像でD2セルに =IF(OR(COUNTBLANK(A2:C2),B2="NG"),"",RANK(C2,$C$2:$C$100)-SUMPRODUCT(($B$2:$B$100="NG")*($C$2:$C$100>C2))) という数式を入れオートフィルで下へコピーしています。 ※ 作業列なしで!というご希望なので無理矢理って感じになってしまいました。 参考になれば良いのですが・・・m(_ _)m

peace_of_mabi
質問者

お礼

二度手間にさせて申し訳ありませんでした。 SUMPRODUCTの式をここで勉強させてもらいうれしい限りです。 無事解決できました。ありがとうございました。

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

こんばんは! セル配置がどのようになっているのか判らないので、勝手に↓のような感じでやってみました。 基本的にRANK関数は数値のみが対象ですので、文字列の行はエラー表示になります。 それを利用してファールの場合は「×」や「Foul」等々なんでも良いので、文字を入力します。 そこで↓の画像ではC2セルに =IF(OR(A2="",B2="×"),"",RANK(B2,$B$2:$B$100)) という数式を入れオートフィルでコピーしています。 ※ とりあえず100行目までのデータに対応できる数式です。 こんな感じではどうでしょうか?m(_ _)m

peace_of_mabi
質問者

補足

画像添付するキャプチャーみたいなのがなく、添付してなくて判り辛かったですね すみません;; tom04さんのフォーマットの雰囲気ではなく、こんな感じで・・・;; 氏名 判定 距離 順位 山田 OK  50 2 鈴木 NG  60 原田 OK  30 3 清水 OK  70 1 酒井 NG  30 距離は参考としてデーターに残す考えです 1行余分なセルを作り順位の仮算出してからの方法はわかりますが 余分な行を作らずに順位算出したいです。 あとから・・・・で申し訳ありませんが時間がある時によろしくお願いします。