• ベストアンサー

よろしくお願いします。RANK関数

一定の人だけの順位を低い順に出したいと思っています A列に名前 B列に点数 C列に順位のする、しない D列に順位 Aさん 80点 ● 5 Bさん 80点 ● 4 Cさん 100点    Dさん 50点 ● 2 Eさん 40点 Fさん 20点 ● 1 Gさん 60点 ● 3     :     : のようにしたいと思っています。 同じあたいも違う数字で出したいと思っているのですが よろしくお願いします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.5

No.3のmaruru01です。 >●の数とD列の数が1つ少なくなってしまいます。 ひょっとして、1行目は「名前」「点数」などの項目が入力されているのでは? それなら、ちゃんと数式を2行目用に変更しないとダメですよ。 =IF(LEN(C2),SUMPRODUCT(($C$2:$C$8="●")*($B$2:$B$8<B2))+SUMPRODUCT(($C2:$C$8="●")*($B2:$B$8=B2)),"") このような質問に対する回答に対しては、自分の実際のデータに従って範囲変更(確認)するのは、必須です。 最初にそこを疑うようにして下さい。 それが出来ないなら、セルの位置も正確に提示するようにしましょう。

bartenn
質問者

補足

大変申し訳ありませんでした。。 初歩的なミス。文字でエラーが・・ なんとか出来上がり、大変満足しております。 このたびはありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

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

さすがに既に2件も回答がありますが、関数では複雑になると思って、VBAでユーザー関数作成でやって見ました。 (1)C列が●の人は対象から外す(#1さんの疑問) (2)B列の文字「点」が都合悪いので、数値点数に変えさせて頂きました。表示形式で点を出します(下記) (3)同点行は順位数は別々に変えるが、前後の根拠はない。(#1さんの質問) の3点を許してもらって、やりました。 ツール-マクロ-VBEでVBEの画面になります その画面のメニューで挿入-標準モジュールの画面を出して、下記を貼りつけます。 Function rankx(a, x) Dim cl As Range Dim b(1000), c(1000) n = 0 For Each cl In a If cl.Offset(0, 1) = "" Then Else n = n + 1 b(n) = cl c(n) = cl.Row End If Next '---- For i = 1 To n For j = i + 1 To n If b(i) < b(j) Then Else w = b(i) b(i) = b(j) b(j) = w '--- w = c(i) c(i) = c(j) c(j) = w End If Next j Next i '---- For i = 1 To n If c(i) = x.Row Then rankx = i End If Next i End Function (利用)ワークシートに戻って、 E1セルに=rankx($B$1:$B$7,B1)といれ、E7まで複写する。 1000行以上なら、VBAコードの1000を5000とかに変えること。点数は1列だけに入っているものとする。 (結果) Aさん 80 ● 5 5 Bさん 80 ● 4 4 Cさん 100 0 Dさん 50 ● 2 2 Eさん 40 0 Fさん 20 ● 1 1 Gさん 60 ● 3 3 B列の書式をユーザー設定で#"点"などにすれば 80点 80点 100点 ・・・に、見た目はなります。

全文を見る
すると、全ての回答が全文表示されます。
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。maruru01です。 同じ点数の場合に、行が上の方が順位が小さくなるパターンは、D1に、 =IF(LEN(C1),SUMPRODUCT(($C$1:$C$7="●")*($B$1:$B$7<B1))+SUMPRODUCT(($C$1:$C1="●")*($B$1:$B1=B1)),"") と入力して、下の行へコピーします。 行が下の方が順位が小さくなるパターン(質問欄の例)は、D1に、 =IF(LEN(C1),SUMPRODUCT(($C$1:$C$7="●")*($B$1:$B$7<B1))+SUMPRODUCT(($C1:$C$7="●")*($B1:$B$7=B1)),"") と入力して、下の行へコピーします。 なお、範囲は適宜変更して下さい。 また、絶対参照($付き)と相対参照($なし)は、重要ですので、注意して下さい。

bartenn
質問者

補足

早速の返信助かります。 やってみましたが・・ ●の数とD列の数が1つ少なくなってしまいます。 コピーしてみたのですが・・ うまい事行きません。 どうにかうまいこと行く方法ありますか? よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

D列にランク用の数字設定でいいなら D1=IF(C1="●",B1+ROW()/100,101) E1=IF(C1="●",RANK(D1,$D$1:$D$100,1),"") 上記で同じ点数なら行が上の方が順位が小さくなります。 D列は幅を0にするか非表示にしてください。 人数が100人以上なら ROW()/1000の様に割る値を変更してください。

全文を見る
すると、全ての回答が全文表示されます。
  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.1

C列は、「●が順位付け対象者で、空白は対象外」でいいですか? 点数が同じ人の順位の差別化は何を基準にしますか? 後の回答者のために、補足お願いします。

bartenn
質問者

補足

早速返信助かります。 空白は、対象外で点数の同じ人は並んでる順番と思っています。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • rank関数?

    次のような表があって、順位をつけたいのですが、 別シートに順位順の表を自動的に作成する事は可能 なのでしょうか? よろしくお願いいたします。 ↓の表でまず順位をだしてからでも良いのですが      件数   順位 Aさん   5    5 Bさん   0     Cさん   4    6 Dさん   2    7 Eさん  10    1 Fさん   2    7 Gさん   6    4 Hさん   0     Iさん   7    3 Jさん   8    2 別シートに順位順の表を作成したいのです。 順位          件数 1     Eさん   10 2     Jさん    8 3     Iさん    7 4     Gさん    6 5     Aさん    5 6     Cさん    4 7     Dさん    2 7     Fさん    2 何か良い方法があるでしょうか? よろしくお願いいたします。

  • (Excel)RANK関数で同じ値なのに違う順位になる

    Excel2000を使用しています。 下記の表を作成して、  F列には、=SUM(A1:E1)-MIN(A1:E1)-MAX(A1:E1)  G列には、=RANK(F1,$F$1:$F$4) を入力していますが、 F2とF3は同じ値になるのに順位が違って出てきます。 確か、RANK関数は同値の場合同じ順位が出てくると思うのですが、 そうならないので困っています。 ちなみに、F列に数式ではなく計算結果を直接入力した場合には 同じ順位が出てきました。 どうしてそのようなことになってしまうのでしょうか? ご存知の方がいましたら教えてください。 (A) (B) (C) (D) (E) (F) (G)  9.50  9.20  9.35  9.60  9.45 28.3000  1  9.40  9.30  9.35  9.55  9.45 28.2000  2  9.20  9.45  9.40  9.35  9.55 28.2000  3  9.45  9.30  9.30  9.40  9.50 28.1500  4 宜しくお願いします。

  • RANK関数について

    エクセルでこんな感じの表があります。 A1■B1■C1■D1■E1■F1■G1■H1 12■13■23■66■93■89■72■29 ランク関数をつかってそれぞれの順位を出したいのですがうまくいきません。 数式には=RANK(A1,A1,C1,E1,G1,0)と入力してあります。範囲を指定する際にA1,C1,E1,G1のような、連続していないセルを指定しては、計算できないものなのでしょうか? どなたかご教授ください

  • 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位の順位を出すにはどのようにすればよいかわかる方がいれば教えてください。

  • エクセルで、自動的にランク順に順番を表示させる方法

    エクセルで、自動的にランク順に順番を表示させる方法 エクセル2003を使用しています。 T列に名前、U列にその人の点数が表示されています。 これに対し、点数の高い順に自動的に並べ替えてB列に順位、C列に名前を表示させたいです。 同じ点数がある場合、以下の様な表示をしたいです。 1位 Aさん 80点 2位 Bさん 70点 2位 Cさん 70点 4位 Dさん 60点 表示>並べ替えは使用しないで、関数で対応したいです。 分かる方いましたら、お願いします。

  • エクセル関数

      A  B  C  D  E  F  G 1 10  1  20  1  30  1  8 2 9 2 0 - 0 - - 3 8 3 15 3 23 3 6 4 5 4 19 2 24 2 7 B=Aの順位 、 D=Cの順位 、 E=A+C 、F=Eの順位 、G=Fの得点 の時 G=Fが1の時8、2の時7・・・8の時1、9以下空白 Cが0(ゼロ)の時Dが空白 Eが0(ゼロ)の時Fが空白 上記の場合の関数をどなたか回答よろしくお願いします。 うまく表示できていませんがCとE以外は1桁の数字で、D,F,Gの-は空白です。

  • 順位表のフリーウェア?

    ダーツの各競技の順位表がほしいのですが、このフリーウェアなら使えるよ。ってものがあれば教えて下さい。 A~Gの7人でそれぞれの点数を記入します。 例えば、 A:340点 B:500点 C:280点 D:380点 E:100点 F:560点 G:430点 ↓ 自動で F:560点 B:500点 G:430点 D:380点 A:340点 C:280点 E:100点 今はエクセルで毎日点数を更新し、セルを移動 しながら順位を変えています。 よろしくお願いします。

  • ランクの低い順に並び替えたい

    エクセル2003で、下記のように入力されています。 なおポイントは別シートの計算式を参照して入れており、順位はRANKを使って入れています。 ポイントは日々変わります。  A     B   C 1 チーム名 ポイント ランク 2 チームA 8.84    4 3 チームB 11.41   2 4 チームC 13.81   1 5 チームD 8.81   5 6 チームE 3.61   7 7 チームF 6.61   6 8 チームG 9.01   3 これを順位の低い順に並べ替えたいのですが、どのようにすればよいでしょうか?

  • Excel 関数 ランク比較

    A列 B列 C列  今週 前週 ↑↓ X   X   E1  D   ↑ E1  B   ↑ A   B   ↓ 今週の状態(A列)と前週の状態(B列)を格納した列があります。 2つの状態を比較し、状態がよくなってれば「↑」、反対に悪くなってれば「↓」、変わらなければ何も表示しない ということを、C列に関数式を入れて、上記のように表示させたいです。 IF関数で作成しようとして考えていたのですが、うまく考えが纏まらず悩んでいます。 ランクは (良)X、A、B、C、D、E1、E2、S(悪)の順になります。 どうか教えて頂けますと幸いです。

  • エクセルの関数でピボットテーブルのような集計

    以下のようなテスト結果の表(DB)があります。 列:A,B,C,D,E,F,G,H,I,J,K,L,M,N,O   ,,,,1700,小野,,,,2,,0,A,B,0   ,,,,1200,小野,,,,4,,1,C,0,C   ,,,,1700,柴田,,,,5,,4,A,B,0   ,,,,1400,矢野,,,,3,,4,B,0,A   ,,,,1200,伊藤,,,,4,,1,C,D,0,   ,,,,1000,田村,,,,4,,3,D,C,A F列には、名前がフルネームで入力されています。同一人物が複数あります。 J列には、数字が1,2,3,4 L列には、A,B,C,D,E M列には、A,B,C,と数字の0 N列には、A,B,C,と数字の0 O列には、A,B,C,と数字の0 が、それぞれ入力されています。 このDBを元に L,M,N,Oのデータの個数を名前別に以下のように集計をしたいのです。      J , L , M ,N,O 名前,1,2,3,4,計,A,B,C,D,E,計,A,B,C,0,計,.... 小野, ピボットテーブルで考えましたが、5回行わねばならず、結合も考えると関数で何とかならないものか と質問させていただきました。 別に関数でなくても、もっと有効な方法がありましたらそれで結構です。御教示下さい。

専門家に質問してみよう