
■エクセル上で数字に順位を付けて上位(下位)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です。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
ありゃりゃ。
とんだ手抜かりを。んでは簡単じゃない数式を使った方法で。
それぞれ「次の値に等しい」で
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)
失礼しました。
別の方法での回答ありがとうございます。
この方法を使うと出来ましたが、ちょっと参照量が多くなると動作が重くなってしまいました。
FREQUENCY関数と言うのは初めて見たので、理解は出来ていませんが方法の一つとして参考になりました。
No.3のkagakusuki様の補足もあり、最初に回答された方法と併せて解決しました。
ありがとうございました。

No.5
- 回答日時:
添付図参照
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
フォント色 緑

回答ありがとうございます。
出てきた数字を調べてBに書き出す(同じ数字は2回目以降は空白)
Aセルの値をBに書き出した数字でランク降順にして、それぞれ1位・2位・3位となった場合にそれぞれ色を付ける。
と言った風に解釈しました。
色んなやり方で出来るのですね。どれも思いつかない方法だったので助かりました。
No.3
- 回答日時:
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)
等とする必要があります。
回答ありがとうございます。
この方法を使う事で解決しました。
3位の方法は自分なりに解釈しようとしたのですが、特に大なりイコールとアンドで結ばれている所が分りませんでした。
解釈は出来ていませんが解決は出来ました。ありがとうございます。
ベストアンサーに非常に悩んだのですが、ベストアンサーが1つしか選べないので申し訳ないです。
No.2
- 回答日時:
自分は計算の誤差にならない微少な数字を各値に加えちゃいます。
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関数を使うとかします。
回答ありがとうございます。
今回は同率1位を両方とも赤色にした上で次の順位を青色と言った具合にしたかったので、
質問の仕方が悪かったのかも知れませんが、この方法は同率1位を回避する事に使えそうです。
一つの参考になりました。
No.1
- 回答日時:
簡単な関数だけで結果を得るなら。
一位の数字は今のままでもいいですが
=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)
などのように拾ってくることができます。
それぞれ「次の値に等しい」に与えます。
素早い回答ありがとうございます。
2位の方法はMAX関数で1位の数を調べ、それに+1する事で次が何位になるのか分かるので、
それをLARGE関数で抜き出すと言う風に解釈しました。
同率1位がいくつあろうと、その次の順位を抜き出すのはややこしい手順が必要なんですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】=EXACT(a1,b1) a1とb1...
-
【マクロ】excelファイルを開く...
-
エクセルのリストについて
-
【マクロ】【相談】Excelブック...
-
エクセルの関数について
-
【マクロ】数式を入力したい。...
-
【マクロ】元データと同じお客...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
【マクロ】左のブックと右のブ...
-
【画像あり】オートフィルター...
-
Office2021のエクセルで米国株...
-
LibreOffice Clalc(またはエク...
-
vba テキストボックスとリフト...
-
エクセルのVBAで集計をしたい
-
【マクロ】【配列】3つのシー...
-
エクセルシートの見出しの文字...
-
【マクロ】【画像あり】ファイ...
-
【マクロ】【画像あり】❶ブック...
-
【マクロ画像あり】❶1つの条件...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報