- 締切済み
エクセル 条件付け RANK
色々調べてみたのですが判らなかったので簡単かも知れませんが教えてください。 〔例〕 幅跳びにて跳んだ距離測定しランク付けをするときにファールをした人は除外対象にして 順位を付けたい。 すみませんがよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- kagakusuki
- ベストアンサー率51% (2610/5101)
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,"")
- KURUMITO
- ベストアンサー率42% (1835/4283)
一回の幅跳びでランクを付けているのでしたら簡単ですが、公式競技などでは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))
お礼
今後想定される問題解決方法までアドバイスをいただきありがたい限りです。 参考になりました。
- tom04
- ベストアンサー率49% (2537/5117)
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
お礼
二度手間にさせて申し訳ありませんでした。 SUMPRODUCTの式をここで勉強させてもらいうれしい限りです。 無事解決できました。ありがとうございました。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! セル配置がどのようになっているのか判らないので、勝手に↓のような感じでやってみました。 基本的にRANK関数は数値のみが対象ですので、文字列の行はエラー表示になります。 それを利用してファールの場合は「×」や「Foul」等々なんでも良いので、文字を入力します。 そこで↓の画像ではC2セルに =IF(OR(A2="",B2="×"),"",RANK(B2,$B$2:$B$100)) という数式を入れオートフィルでコピーしています。 ※ とりあえず100行目までのデータに対応できる数式です。 こんな感じではどうでしょうか?m(_ _)m
補足
画像添付するキャプチャーみたいなのがなく、添付してなくて判り辛かったですね すみません;; tom04さんのフォーマットの雰囲気ではなく、こんな感じで・・・;; 氏名 判定 距離 順位 山田 OK 50 2 鈴木 NG 60 原田 OK 30 3 清水 OK 70 1 酒井 NG 30 距離は参考としてデーターに残す考えです 1行余分なセルを作り順位の仮算出してからの方法はわかりますが 余分な行を作らずに順位算出したいです。 あとから・・・・で申し訳ありませんが時間がある時によろしくお願いします。
お礼
人によって数式の組み方が違う事に少し驚きました。 たぶん自分の使いやすい、考えやすい数式の組み方をしてるのでしょうね、勉強になります。 少しずつ勉強しながら覚えて行き、質問投稿せずに解決できるようにがんばります。 アドバイスありがとうございました。