gooポイントが当たる質問投稿キャンペーン>>

■エクセル上で数字に順位を付けて上位(下位)3位までの数字に色を付けたい。

■現在の方法
書式→条件付書式

条件1
セルの値が次の値に等しいを選び、
関数「=LARGE($C$6:$C$100,1)」と入力し、書式で文字の色を指定。赤色

条件2
セルの値が次の値に等しいを選び、
関数「=LARGE($C$6:$C$100,2)」と入力し、書式で文字の色を指定。青色

条件3
セルの値が次の値に等しいを選び、
関数「=LARGE($C$6:$C$100,3)」と入力し、書式で文字の色を指定。緑色

■問題点
1番大きい数字が2つある場合、2箇所が赤色になり、2番目に大きい数字が緑色になる。青色は使われない。
(順位で言うと同率1位が二つ、2位が飛ばされて3位が一つと処理される(1位・1位・3位))

■やりたい事
1番大きい数字が2つある場合2箇所とも赤色にし、2番目に大きい数字を青色、3番目に大きい数字を緑色にしたい。
(順位で言うと1位・1位・2位・3位と言った具合にしたい)
もし2番目に大きい数字が3つあってもその3箇所を青色にして、3番目に大きい数字を緑色にする。
(順位で言うと1位・1位・2位・2位・2位・3位の様な感じ)

具体的に言うと

現在
10
20
30→緑色
40→赤色
40→赤色

これを
10
20→緑色
30→青色
40→赤色
40→赤色

にしたいのです。

■補足
表の範囲はC6~C100としていますが、実際はC30までしか使っていなく、それ以降は日々データを記入するので拡張用としている。
使用しているエクセルはエクセル2002です。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

ありゃりゃ。

とんだ手抜かりを。
んでは簡単じゃない数式を使った方法で。


それぞれ「次の値に等しい」で
1位:
=LARGE(IF(FREQUENCY($C$6:$C$100+0,$C$6:$C$100+0),$C$6:$C$100),1)

2位:
=LARGE(IF(FREQUENCY($C$6:$C$100+0,$C$6:$C$100+0),$C$6:$C$100),2)

3位:
=LARGE(IF(FREQUENCY($C$6:$C$100+0,$C$6:$C$100+0),$C$6:$C$100),3)

失礼しました。
    • good
    • 0
この回答へのお礼

別の方法での回答ありがとうございます。

この方法を使うと出来ましたが、ちょっと参照量が多くなると動作が重くなってしまいました。

FREQUENCY関数と言うのは初めて見たので、理解は出来ていませんが方法の一つとして参考になりました。

No.3のkagakusuki様の補足もあり、最初に回答された方法と併せて解決しました。
ありがとうございました。

お礼日時:2012/05/25 13:12

添付図参照


1.セル B1 に式 =IF(COUNTIF(A$1:A1,A1)>1,"",A1) を入力して、
  此れを下方にズズーッとドラッグ&ペースト
2.セル A1 に次の[条件付き書式]を設定して、範囲 A2:A5 に
  [書式の貼り付け]を実行
   条件1
     数式が   =RANK(A1,B$1:B$5)=1
     フォント色 赤
   条件2
     数式が   =RANK(A1,B$1:B$5)=2
     フォント色 青
   条件3
     数式が   =RANK(A1,B$1:B$5)=3
     フォント色 緑
「エクセルでの順位に同率がある場合の対処に」の回答画像5
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

出てきた数字を調べてBに書き出す(同じ数字は2回目以降は空白)
Aセルの値をBに書き出した数字でランク降順にして、それぞれ1位・2位・3位となった場合にそれぞれ色を付ける。

と言った風に解釈しました。

色んなやり方で出来るのですね。どれも思いつかない方法だったので助かりました。

お礼日時:2012/05/25 13:13

 ANo.1様の方法ですと、一位の数字と二位の数字の方法に関しましては、大変優れた方法だと思います。


 但し、三位の数字の方法に関しましては、一位の数字が複数存在している場合には、誤った動作をしてしまいます。
 ですから、三位の数字の場合は

=LARGE($C$6:$C$100,COUNTIF($C$6:$C$100,">="&LARGE($C$6:$C$100,2))+1)

ではなく、

=LARGE($C$6:$C$100,COUNTIF($C$6:$C$100,">="&LARGE($C$6:$C$100,COUNTIF($C$6:$C$100,MAX($C$6:$C$100))+1))+1)

等とする必要があります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

この方法を使う事で解決しました。

3位の方法は自分なりに解釈しようとしたのですが、特に大なりイコールとアンドで結ばれている所が分りませんでした。
解釈は出来ていませんが解決は出来ました。ありがとうございます。

ベストアンサーに非常に悩んだのですが、ベストアンサーが1つしか選べないので申し訳ないです。

お礼日時:2012/05/25 13:12

自分は計算の誤差にならない微少な数字を各値に加えちゃいます。



 10 → 10 + 0.000001
 20 → 20 + 0.000002
 30 → 30 + 0.000003
 40 → 40 + 0.000004
 40 → 40 + 0.000005

面倒なのでROW関数を使って

 10 → 10 + ROW()/1000000
 20 → 20 + ROW()/1000000
 30 → 30 + ROW()/1000000
 40 → 40 + ROW()/1000000
 40 → 40 + ROW()/1000000

と、しちゃうかな。
でもって、微少数値を加えた後でLARGE関数を使うとかします。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

今回は同率1位を両方とも赤色にした上で次の順位を青色と言った具合にしたかったので、
質問の仕方が悪かったのかも知れませんが、この方法は同率1位を回避する事に使えそうです。

一つの参考になりました。

お礼日時:2012/05/25 13:11

簡単な関数だけで結果を得るなら。




一位の数字は今のままでもいいですが
=MAX($C$6:$C$100)
でいいです。


二位の数字は
=LARGE($C$6:$C$100,COUNTIF($C$6:$C$100,MAX($C$6:$C$100))+1)
三位の数字は
=LARGE($C$6:$C$100,COUNTIF($C$6:$C$100,">="&LARGE($C$6:$C$100,2))+1)
などのように拾ってくることができます。

それぞれ「次の値に等しい」に与えます。
    • good
    • 0
この回答へのお礼

素早い回答ありがとうございます。

2位の方法はMAX関数で1位の数を調べ、それに+1する事で次が何位になるのか分かるので、
それをLARGE関数で抜き出すと言う風に解釈しました。

同率1位がいくつあろうと、その次の順位を抜き出すのはややこしい手順が必要なんですね。

お礼日時:2012/05/25 13:11

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで同率の順位の人が表示されない

得点表を元に順位(RANK関数)を出し名前順の表にして、
その順位表を元にVLOOKUP関数で順位順の表を作ってます。
この場合、順位順の表では同順位の人がいた場合、同順位2人目以降の人の名前が表示されません(#N/Aと表示されます)
同位の人も名前と得点をそのまま表示させたいのですが、何か方法は有りませんか?

現在↓

1位 Aさん 10点
2位 Bさん  9点
3位  #N/A  #N/A
4位 Dさん  8点
    ・
    ・
となります。それを

1位 Aさん 10点
2位 Bさん  9点
3位 Cさん  9点
4位 Dさん  8点

としたいです。
左の順位表記は書きこんでいるだけなので変化しません。もちろん順位に連動して変化してほしいですが、このままでも構いません。

Aさん・Bさんの各セルに=VLOOKUP(Q5,$U$4:$V$21,2,FALSE)のように設定しています。
ずいぶん前に本を見ながら設定したもので、理屈は忘れてます・・エクセル2000です。

Aベストアンサー

こんにちは。
Wendy02 です。No.8 に対するコメントです。

他の方の回答を見てはいませんが、どうやら、私のほうは、振り出しです。

その数式をみた限りでは、もう、解答自体はよりも、失礼ですが、これは、基本的な問題ではないかと思いました。直接の解答というよりも、経験者としての回答をさせていただきます。

最初のご質問のようにVLOOKUP を使うことは、間違いないと思います。しかし、その関数を使用する場合は、検索に必要なもの/一意な(ユニークな)データを左端の格子状の1列目に持ってくるということは大前提です。

(もちろん、掲示板レベルで、他のワザをご披露する方もいるようですが、それはそういうテクニックであり、質問本位・データ本位の解答です。しかし、最初から、そういう作りにするのは、通常はありえないのです。)

順位を左端に以って表示するということ自体は問題ではなく、選び出すデータとして必要だということです。誤解なさらないでください。

つまり、以下の場合は、

  Q  R    S
1,名前  得点 順位 ←データの母体(データベース)
2,Aさん 10点  1位 

 変動しやすいもの、計算値は、右側に置きます。
 特定化する(ユニークなもの)は、左端になります。できない場合は、増加する数字でも可能です。

'---------------------------
21,順位 名前  得点  ←表示側は、自由です。
22,1位 Aさん 10点
  ・
  ・
  ・
'-------------------------------

私の前回の式で、VLOOKUPを使い、ユニークなものとして、「名前」を使っていたので、一部の式が完全に使えません。(INDEX関数とMATCH関数を使ってだせますが、最初からは作りません。)

次に、また基本的なことですが、

>=IF(RANK(D12,$S$2:$S$18)=COUNTIF($S$2:$S$18,">=" &D12),RANK(D12,$S$2:$S$18),COUNTIF($S$2:$S$18,">" & D12)+1)
>D12の部分が変わります。→F12,H12,J12・・J38,L38

>D12の部分が変わります。→F12,H12,J12・・J38,L38

 =RANK(数値,範囲)

$S$2:$S$18 の範囲の数値をランキングで出すのが基本です。それを別のところのデータを使うと、万が一には、そのランキングはめちゃめちゃにならないかと思います。

 =RANK(S2,$S$2:$S$18)

あくまでも、範囲の中の数値である必要があると思います。以下の式は、ROW のカッコの中の範囲を変えればよいのですが。

=IF(RANK(S2,$S$2:$S$18)=COUNTIF($S$2:$S$18,">=" &S2),RANK(S2,$S$2:$S$18),COUNTIF($S$2:$S$18,">" & S2)+1)

もしも、元データが点在する場合でも、表に作る場合は、必ず規則性があるはずです。それを、OFFSET 関数やINDIRECT関数によって、ひとつにまとめ合わせることが可能なはずです。

例:
点数が点在している場合のまとめ方
(ただし、実際のデータに当てはめていません)
=INDIRECT(ADDRESS(18+INT(ROW(A1)/6)*10,4+MOD((ROW(A1)-1)*2,8)))

以上が、その元のならびに関するコメントです。
今回、私の回答自体は見送りで構わないのですが、基本的な作りは大事にしたほうがよいですね。

*******

エラー自体については、以下のようにすればよいはずです。ROW($A$2:$A$18)というのは、行データですから、それは、行があっていなくては、取り出せません。

順位 /Q22 ~で、

=INDEX($Q$2:$S$18,MOD(SMALL(INDEX($Q$2:$Q$18+ROW($A$2:$A$18)/100,,),ROW(A1)),1)*100-1,1)

名前  /R22~

=INDEX($Q$2:$S$18,MOD(SMALL(INDEX($Q$2:$Q$18+ROW($A$2:$A$18)/100,,),ROW(B1)),1)*100-1,2)

ここは、VLOOKUPでも可
点数 /S22 ~
=INDEX($Q$2:$S$18,MOD(SMALL(INDEX($Q$2:$Q$18+ROW($A$2:$A$18)/100,,),ROW(C1)),1)*100-1,3)

これは、値コピーして、並べ替えすれば、式はいらないはずですよね。私自身は、あまり難しい式などは使わないのです。手作業で出来る部分は、そのまま手作業で作ります。

こんにちは。
Wendy02 です。No.8 に対するコメントです。

他の方の回答を見てはいませんが、どうやら、私のほうは、振り出しです。

その数式をみた限りでは、もう、解答自体はよりも、失礼ですが、これは、基本的な問題ではないかと思いました。直接の解答というよりも、経験者としての回答をさせていただきます。

最初のご質問のようにVLOOKUP を使うことは、間違いないと思います。しかし、その関数を使用する場合は、検索に必要なもの/一意な(ユニークな)データを左端の格子状の1列目に持ってく...続きを読む

QエクセルRANK関数の同率順位を別表に抽出する時

お世話になります。
エクセル2003を利用しています。初心者なので教えていただきたく存じます。
以下文面のようにランキング表を作りました。
RANK関数を利用してランキングを出し、順位表にTOP5(重複していても)まで出したいと思っています。

A列にA店~Z店までの名前(A店という名前は仮です)が入っており、
B列に上から結果数字がランダムに入力がされており、
C列にRANK関数を使って順位がその結果の横に数字として反映されています。

B列の順位の数字が大体1~20程度までの数字が記入されており、C列のRANK関数の結果が当然ですが重複して順位が表示されている状態です。

別表を作成して1~5位のランキング表を作り、A列に入っている店名とを表示させたいと思っております。
1位と2位は単独であったので店名はINDEXとMATCH関数を使ってきれいに抽出できたのですが、
3位以下は重複しているようで#N/Aと表示されてしまいます。
表示の仕方として「あいうえお順(A~Zの若い順)」で表示できればと思っております。

無知で恐縮なのですが、情報不足の点等あればご指摘いただきたく存じます。
お詳しい方、ご教授宜しくお願い致します。

お世話になります。
エクセル2003を利用しています。初心者なので教えていただきたく存じます。
以下文面のようにランキング表を作りました。
RANK関数を利用してランキングを出し、順位表にTOP5(重複していても)まで出したいと思っています。

A列にA店~Z店までの名前(A店という名前は仮です)が入っており、
B列に上から結果数字がランダムに入力がされており、
C列にRANK関数を使って順位がその結果の横に数字として反映されています。

B列の順位の数字が大体1~20程度までの数字が記入されており...続きを読む

Aベストアンサー

No.1です。
たびたびごめんなさい。

投稿後気になったのですが、前回の方法はE列の順位は必ず1~5までという前提ですので、
同順位でも表示上はランクの差が出てしまいます。

E列順位はC列の順位そのものを表示させるのが一般的だと思いますので、
もう一度やってみました。

↓の画像でC列は小細工せずにRANK関数だけにしてC2セルに
=RANK(B2,B:B)
という数式を入れフィル&コピーしています。

そしてE2セルに
=SMALL(C:C,ROW(A1))

F2セルに
=INDEX(A$1:A$50,SMALL(IF(C$1:C$50=E2,ROW(A$1:A$50)),COUNTIF(E$2:E2,E2)))

これは配列数式になってしまいますので、Shift+Ctrl+Enterで確定!
この画面からコピー&ペーストする場合は、
上記数式をドラッグ&コピー → F2セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)
Shift+Ctrlキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。

最後にE2・F2セルを範囲指定 → F2セルのフィルハンドルで下へコピーすると
画像のような感じになります。

こんな感じではどうでしょうか?m(_ _)m=

No.1です。
たびたびごめんなさい。

投稿後気になったのですが、前回の方法はE列の順位は必ず1~5までという前提ですので、
同順位でも表示上はランクの差が出てしまいます。

E列順位はC列の順位そのものを表示させるのが一般的だと思いますので、
もう一度やってみました。

↓の画像でC列は小細工せずにRANK関数だけにしてC2セルに
=RANK(B2,B:B)
という数式を入れフィル&コピーしています。

そしてE2セルに
=SMALL(C:C,ROW(A1))

F2セルに
=INDEX(A$1:A$50,SMALL(IF(C$1:C$50=E2,ROW(A$1:A$50)),COUNTIF(E$2...続きを読む

QRANK関数 同点の場合違う項目で序列を付けたい

質問願います。
EXCELにて、RANK関数を使って順位付けをする事を理解しています。
スポーツの順位を勝ち点順に並べるのですが、総勝ち点が同点の場合、次に総得点で順位を確定させます。

この場合、順位付けする数値を勝ち点を優先参照・総得点を次に参照させる事は出来ますか?
RANK以外の関数も併用すれば良いのでしょうか?

どなたか回答お願い致します。

Aベストアンサー

総勝ち点が例えばA1セルに50のときに総得点がB1セルに10であったとします。この場合には作業列を作ってC1セルには例えば次の式を入力して重みを付けた値にします。

=A1+B1/1000

C列のデータについてRANK関数を使うことにすればよいでしょう。

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

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

エクセル2003を使用しています。

T列に名前、U列にその人の点数が表示されています。
これに対し、点数の高い順に自動的に並べ替えてB列に順位、C列に名前を表示させたいです。

同じ点数がある場合、以下の様な表示をしたいです。
1位 Aさん 80点
2位 Bさん 70点
2位 Cさん 70点
4位 Dさん 60点

表示>並べ替えは使用しないで、関数で対応したいです。
分かる方いましたら、お願いします。

Aベストアンサー

なるべくシンプルな計算式で。

添付図:
S2に
=RANK(U2,U:U)+ROW()/1000
以下コピー。

B2に
=VLOOKUP(SMALL($S:$S,ROW(A1)),$S:$U,COLUMN(),FALSE)
B,C列にコピー。

A2に
=RANK(C2,C:C)
以下コピー,
必要に応じてA列を右クリックしてセルの書式設定の表示形式のユーザー定義で
0位
と設定しておくなど。

Qデータが重複データの扱い(対処方法) RANK・MATCH・INDEX

ずばりこんなデータから、順位とその人の名前を出す。

1)重複した場合、RANKは、同じ位置して、次の番は、欠としている。
  から、下記のような順位になると思われる。

 氏名 点数 順位
 鈴木 700 5
 斉藤 415 8 
 菅野 700 5
 赤井 780 4
 田村 900 2
 池田 620 7 
 楽谷 900 2
 金田 940 1

 ★問題なのが、同じランクになった人の名前をちゃんと表示したい。
  1位からの点数を表示するのは、LARGE関数でできるんだけど、
  同じランクになっている人が、別々に出てこない。
  とても安易な方法だと思ったんですが、
  検索する範囲(表の行番号)をMATCH関数でもとめておく
  点数をつかうので、当然同じ点数には、同じ行がはいる(上から
  順番だから、1行目と3行目に同じ点数なら、1(順位)が連続する)
  それで、その番号を使いVLOOKUP関数で、名前を拾ってくる。
  其の時、自分で同じ番号のところを修正しておく(1と3にする)
  そうすれば、名前がちゃんと出てくる。
  でも、其のセルには、数式がなくなる。

  ⇒VBAや、難しい関数が使えないと、これが限界なのか。。
   参考にさせてもらうものもみたんですが、
   なかなか・・この苦肉の策でもヨシと思っていいのか・・
   ちょっと自信なくて、、
  
 
 ベスト8(ランクごとに返す)
    点数 氏名 番号
 1位 ヾ  ヾ  
 2位 ヾ  ヾ
 2位 ヾ  ヾ
 4位 ヾ  ヾ
 5位 ヾ  ヾ
 5位 ヾ  ヾ
 7位 ヾ  ヾ
 8位 ヾ  ヾ
   

ずばりこんなデータから、順位とその人の名前を出す。

1)重複した場合、RANKは、同じ位置して、次の番は、欠としている。
  から、下記のような順位になると思われる。

 氏名 点数 順位
 鈴木 700 5
 斉藤 415 8 
 菅野 700 5
 赤井 780 4
 田村 900 2
 池田 620 7 
 楽谷 900 2
 金田 940 1

 ★問題なのが、同じランクになった人の名前をちゃんと表示したい。
  1位からの点数を表示するのは、LARGE関数でできるんだけど、
  同じランクになっている人...続きを読む

Aベストアンサー

こんばんは。

関数で作る場合です。

データが、A1 ~C9 までとしで、

D列~F列に表示しなおすとして、

 D列  E列  F列 
順位  点数  氏名
1位 
2位 
2位 
4位 
5位 
5位 
7位 
8位 

E列
E2 は、
=LARGE($B$2:$B$9,ROW(A1))
フィルダウン・コピーします。

D列は、
D2~
=JIS(RANK(E2,$B$2:$B$9))&"位"

を入れて、フィルダウンコピーします。
(JISは、全角にする関数です。)

F列は、
F2~

=INDEX($A$1:$B$9,MOD(LARGE($B$2:$B$9+ROW($A$2:$B$9)/100,ROW(A1)),1)*100,)

配列数式ですから、一旦式を入力したら、目的の式にF2を押して、『ShiftとCtrlを押しながらEnterキー』を押して、式を配列数式に変換させます。

それから、フィルダウン・コピーします。

これで、出来たかと思います。

こんばんは。

関数で作る場合です。

データが、A1 ~C9 までとしで、

D列~F列に表示しなおすとして、

 D列  E列  F列 
順位  点数  氏名
1位 
2位 
2位 
4位 
5位 
5位 
7位 
8位 

E列
E2 は、
=LARGE($B$2:$B$9,ROW(A1))
フィルダウン・コピーします。

D列は、
D2~
=JIS(RANK(E2,$B$2:$B$9))&"位"

を入れて、フィルダウンコピーします。
(JISは、全角にする関数です。)

F列は、
F2~

=INDEX($A$1:$B$9,MOD(LARGE($B$2:$B$9+ROW($A$2:$B...続きを読む

QEXCELで複数のグループ内での順位を表示させたい。

EXCELで複数のグループ内で順位を表示させるようにしたいのですが、
どうすれば良いかわからず困っています。

たとえば、こんなデータがあるとします。
(A列)(B列)
名前  スコア
あああ10
あああ20
あああ30
あああ 40
いいい5
いいい20
いいい60
いいい65
いいい70
いいい80
いいい90
 ・   ・
 ・   ・
 ・   ・

こようなデータを名前別でスコアの降順で順位をつけたいのです。
(A列)(B列) (C列)
名前  スコア順位
あああ10 4
あああ20 3
あああ30 2
あああ 40 1
いいい5 7
いいい20 6
いいい60 5
いいい65 4
いいい70 3
いいい80 2
いいい90 1
 ・   ・
 ・   ・
 ・   ・

名前の種類の数もかなりあります。

このようにグループ内で順位を表示させるにはどのようにしたらいいでしょうか?

EXCELは初心者なため、どなたかお詳しい方、どうか宜しくお願い致します。

EXCELで複数のグループ内で順位を表示させるようにしたいのですが、
どうすれば良いかわからず困っています。

たとえば、こんなデータがあるとします。
(A列)(B列)
名前  スコア
あああ10
あああ20
あああ30
あああ 40
いいい5
いいい20
いいい60
いいい65
いいい70
いいい80
いいい90
 ・   ・
 ・   ・
 ・   ・

こようなデータを名前別でスコアの降順で順位をつけたいのです。
(A列)(B列) (C列)
名前  スコア順位
あああ10 4
あああ20 3
ああ...続きを読む

Aベストアンサー

    A      B     C
1  名前   スコア  順位
2  あああ   10    4
3  あああ   20    3
4  あああ   30    2
5  あああ   40    1
6  いいい   5    7
7  いいい   20    6
8  いいい   60    5
9  いいい   65    4
10  いいい   70    3
11  いいい   80    2
12  いいい   90    1

C2=SUMPRODUCT(($A$2:$A$20=A2)*($B$2:$B$20>B2))+1
★下にコピー

Qエクセル2010でRANK関数に条件を付けるとき

エクセル2010を使っている者です。
RANK関数で順位をつけても同順位だった場合、他の条件で判定することは可能でしょうか?
過去の質問も見たのですが、私のしたいこととは違う事例なんですね。


具体的には、添付画像のような表でドント式で順位をつけようと思っています。

オレンジ色にしたセルに、一つ右のセルの値について数値の高い順に順位をつけていき(全列のオレンジ色のセルの右の値の中での順位です)、値が同じであれば「総数」の値の大きい列のセルのほうが上位になるというようにしたいと思っています。

どうぞ、よろしくお願いいたします。

Aベストアンサー

作業列を使ってごまかす方法があります。
添付の図の例では、D2セルに↓と、入れてあります。
=B2+C2/1000+ROW()/100000

+C2/1000 は、第2条件である「総数」を1/1000した値を足すことで、元データが同じときには「総数」が多いほうが上になるようにしています。
+ROW()/10000 は、データも総数も同じ場合、後から登場した方を上位とするために足しています。

「/1000」や「/10000」は、実際の値やデータ量に合わせて調整してください。

Q(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


宜しくお願いします。

Excel2000を使用しています。

下記の表を作成して、
 F列には、=SUM(A1:E1)-MIN(A1:E1)-MAX(A1:E1)
 G列には、=RANK(F1,$F$1:$F$4)
を入力していますが、
F2とF3は同じ値になるのに順位が違って出てきます。

確か、RANK関数は同値の場合同じ順位が出てくると思うのですが、
そうならないので困っています。

ちなみに、F列に数式ではなく計算結果を直接入力した場合には
同じ順位が出てきました。

どうしてそのようなことになってしまうのでしょうか?
ご存知の方がいましたら教えてくださ...続きを読む

Aベストアンサー

計算精度の問題です。
計算処理をおこなうと、0が
0.00000・・・・01になる場合
があります。
そのため、見た目は一致しているけれど
異なる値になっていると思われます。
ツールメニュー・オプション・計算方法・
「表示桁数で計算する」のチェックをON
して試してください。

QExcelで最大値の入っている数値の右側にある項目名を拾いたい。

Excelで最大値の入っている数値の右側にある項目名を拾いたい。

下のようなデータがあります。(A列は年、Bは何かの生産量・・とします)

1 2000 7
2 2001 11
3 2002 14
4 2003 10
5 2004 9
6 2005 8

生産量(B列)の最大値を求めるのは=MAX(B1:B7)で"14"が得られると思いますが、求めているのは"14"の入っている年の"2002"という数字を隣のC1に入れたいと思います。
どのような関数が必要でしょうか?

Aベストアンサー

こんばんは!
一例です。

↓の画像でC2セルに表示するようになりますが・・・

C2セルの数式は
=INDEX($A$2:$A$1000,MATCH(MAX(B2:B1000),B2:B1000,0))
にしています。
(エラー処理はしていません)
A列の1000行目まで対応できるようにしていますが、
データ量によって範囲指定の領域はアレンジしてみてください。

以上、参考になれば幸いです。m(__)m

QRANK関数 順位が同じだった場合の条件が2つあります

RANK関数で求めた結果が同じだった場合、別のフィールドを見に行って順位を同じにしない方法はわかりました。
RANK関数とSUMPRODUCT組み合わせすればいいんですね。

今回は条件が2つあります。
ゴルフの順位を求めたい。
まず結果にて順位を求めました。同じ順位だった場合「IN」の数字を見に行きます。そこでも同じだった場合(「OUT」が違えばありえますよね?)
次に見に行くのが年齢を見に行くそうです。

RANKにSUMPRODCTを2つ組み合わせてみたのですがうまくいきませんでした。

よろしくお願いします

Aベストアンサー

私はゴルフをしないので、スコア等間違っているかもしれませんが、
  A    B   C  D   E    F  ←列
1  氏名  in  out  計  年齢  順位
2  a    15  13  28   18   4
3  b    15  13  28   25   3
4  c    13  15  28   32   2
5  d    16  12  28   27   5
6  e    13  13  26   20   1


(1)スコアが少ない人が上位
(2)同スコアの場合INのスコアが少ない人が上位
(3)さらに同スコアの場合年齢が多い人が上位
の様な感じでよいのでしょうか?

RANK関数は使っていませんが、

=SUMPRODUCT(($D$2:$D$6<D2)+(($D$2:$D$6=D2)*(($B$2:$B$6<B2)+($B$2:$B$6=B2)*($E$2:$E$6>E2))))+1

でどうでしょう?

(1)自分より「計」が少ない人
(2)「計」が同じでInがすくない人
(3)「計」・「In」が同じで年齢が多い人
が何人いるか計算し、その次の順位(+1)にします。

間違っていたらすみません。

私はゴルフをしないので、スコア等間違っているかもしれませんが、
  A    B   C  D   E    F  ←列
1  氏名  in  out  計  年齢  順位
2  a    15  13  28   18   4
3  b    15  13  28   25   3
4  c    13  15  28   32   2
5  d    16  12  28   27   5
6  e    13  13  26   20   1


(1)スコアが少ない人が上位
(2)同スコアの場合INのスコアが少ない人が上位
(3...続きを読む


人気Q&Aランキング