• 締切済み

エクセル 条件付け 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行余分なセルを作り順位の仮算出してからの方法はわかりますが 余分な行を作らずに順位算出したいです。 あとから・・・・で申し訳ありませんが時間がある時によろしくお願いします。

関連するQ&A

  • ランク付けについて

    ラリー結果、設定時間に近い順にランク付けしたいのですが、設定時間に対し早い人や遅い人がいるため、RANK関数では順位が間違ってしまいます。(画像添付しています) 良い方法があったら教えてください。よろしくお願いします

  • エクセルの関数でランク付けをしたい

    順位ではなく、ランク付けをしたいです。 0ポイント・・・初級 1~3ポイント・・・中級 4~7ポイント・・・上級 8ポイント以上・・・達人 という関数を知りたいです。ご存知の方教えてください。

  • エクセルデータにランク付けしたい

    データ一覧には、品目コード(数百あり)、所属名(50程度あり)、数量が入っていますがそれぞれの品目コード毎に数量の多い所属順にランク付けしたいのですが、RANK関数を使うと品目コード毎に範囲指定が必要になりますよね? また、品目コード、数量(降順)でソートをかけて順位を付けても、品目コード毎に1~の順位は付けられません。これってエクセルでは無理ですか。困っています教えてください。

  • Excelで条件付でランク付けをするには

    エクセルでRank関数を条件付で使うための数式を教えてください。 ゴルフの打数を昇順にしたいのですが、同順位の場合年齢が若い人の場合は後(降順)にするようにする数式を教えてください。

  • Rank付けについて

    エクセルでRank付け(順位)を考えています。 Rank関数で処理しようと考えたのですが,A列のコード番号が一定ではないため、処理に困っています。場合によってはマクロも考えています. どなたかアドバイス頂けないでしょうか。 A列にコード番号,B列に数値,C列に順位を入れます. 例えば、A2~A4まで1、A5~A6まで2とあり,A2~A4とA5~A6にはそれぞれおなじ数値が入ります。A列コードは3行分だったり2行分だったりと不規則に下に続いていきます。ただし,まとまたコード番号で固まっています. そのA列の同じコード番号全てに対して、B列の値を元にC列に順位を入力したいのです. コード    数値     順位 1       10       3 1       14       1 1       12       2 2       10       2 2       40       1 5       18       3 5       12       2 5       10       1 5       20       4

  • RANK関数について

    100m走の順位を出したいんですが、 例)     1回目   2回目   順位 A君              1位  (未計測) B君              1位  ( 〃 ) C君              1位  ( 〃 ) D君  12″5  12″4  6位 E君  12″3  12″5  5位 F君  13″0  12″7  7位 G君  12″0  12″0  4位 RANK関数、MIN関数を使いましたが、このようにしか順位が出せません。 測定した人の中だけで1位から4位の順位を出すにはどのようにすればよいかわかる方がいれば教えてください。

  • 人をランク付けしてしまう 自分が苦しいです

    私は無意識のうちに職場の人や友人達をランク付けしてまいます。 ランク付けの基準は、情けない話ですが「仕事ができる」や 「収入がいい」や「見た目」や「人望がある」や「生まれ育ちが よい」などです。 そのことで自分では意識していなくても、人によって違う態度を とったり、どこかで見下した態度をとっていたり、周囲の方に 嫌な思いをさせていることもあると思います。 また、自分自身もそのランク付けの対象として自己批判を繰り返し、 疲れています。 このような状態なので、友人や職場の人に心を開くというようなこと は到底できません。要はダメな自分をさらけだすなど、もってのほか で、自分をよく見せなければという気持ちが先行しています。 見せかけなんてすぐにバレてしまうことぐらい、分かってはいるの ですが・・・・。 全ては自分に自信がなく自己評価が著しく低いことが起因しているの かもしれません。 このランク付けというどうしようもない思考回路を断ち切るよい方法が ありましたら、どうかアドバイスお願いします。

  • エクセルのRANK関数について

    エクセルのRANK関数を使って、順位を表示させたいのですが、 空白セルと、"0"の値が1位にカウントされてしまいます。 これを除外して表示させる方法はあるのでしょうか? 以上よろしくお願いします。

  • ランクづけ。

    ランクづけ。 ランクとかクラスとか、どういう基準をもって、「勉強」をアピールしているのか?たまに分からないと疑問に思ったことがあります。2つの世界しか見えていない「上下」とか「優劣」とか、そんなん」どうでもいいことだと思うんですけど、こだわる人っていますよね。もっと「左右」の視野も必要だと思ったのですが、どのように、知り合いに伝えれば、私の思考メカニズムが変わったと評価をもらえるか?そして、知り合いが、レールをはずさないで、うまく伝えられる方法はありますか?

  • RANK関数で順位付けする方法

    お世話になります。Oracle初心者です。RANK関数による順位付けについて悩み、検索してもわからず困っております。 次のような表tbがあります。 数値,順 70 10 30 この「順」のカラムに順位を付けて 数値,順 70,3 10,1 30,2 としようとしています。SELECTなら SELECT 数値,rank() over (order by 数値 desc) from tb; が成功します。これでupdateする場合、 (rank() over (order by 数値 desc))をした値を update tb set 順= とすればよいと思うのですが、うまくいきません。 PL/SQLを使わず、SQLでRANK関数を使って順位付けするにはどのようにしたらよろしいでしょうか。 勉強不足だと思い、申し訳なく思います。何卒よろしくお願いいたします。

専門家に質問してみよう