
「部署ごとに順位を出したい」「カテゴリごとにランキングしたい」
このような条件付きランキング(グループ内順位)は、実務で非常によく使います。
しかし結論から言うと、Excelに「RANK IF関数」は存在しません。
✔ 結論
グループ内ランキングは次のいずれかで解決できます。
グループ内ランキングは次のいずれかで解決できます。
- COUNTIFSで1発計算(上級者向け)
- IF+RANK(作業列あり・誰でも理解できる)

【最短で解決】グループ内ランキングの完成形(コピペOK)
例:A列=部署、B列=売上、C列=順位
=COUNTIFS($A$2:$A$100,A2,$B$2:$B$100,">"&B2)+1
この式で「同じ部署内での順位」が求められます。
※売上が大きいほど上位(降順)の場合
方法①:COUNTIFSでグループ内順位を出す(1セル完結・上級者向け)
考え方
「同じグループ」かつ「自分より大きい値」を数えることで順位を出します。
=COUNTIFS(グループ範囲,グループセル,数値範囲,">"&対象セル)+1
メリット
- 1セルで完結する
- 作業列が不要
デメリット
- 数式の意味が直感的に分かりにくい
- 引き継ぎ時に理解されにくい
方法②:IF+RANKでグループ内順位を出す(初心者でも安全・おすすめ)
実務ではこちらの方が圧倒的に安全です。
手順①:対象グループだけ抽出(作業列)
=IF(A2="営業部",B2,"")
手順②:RANKで順位付け
=IFERROR(RANK.EQ(C2,$C$2:$C$100,0),"")
※C列が作業列
メリット
- 何をしているか一目で分かる
- 誰が見ても理解できる
- トラブルが起きにくい
デメリット
- 作業列が必要
同順位(重複データ)がある場合の注意点
売上などで同じ値がある場合、順位の付き方に注意が必要です。
- COUNTIFS方式 → 同順位は同じ順位、次は飛び番(例:1,1,3)
- RANK関数 → 同様に飛び番になる
これはExcelの仕様です。
もし「1,2,2,3」のように詰めたい場合は、別のロジック(MATCH関数や補助列)が必要になります。
RANK / RANK.EQ / RANK.AVGの違い
- RANK:旧関数(現在も使用可能)
- RANK.EQ:現在の標準(基本はこちらを使用)
- RANK.AVG:同順位の平均順位を返す
特に理由がなければ、RANK.EQを使うのがおすすめです。
どちらを選ぶべきか?【結論】
| 方式 | COUNTIFS方式 | IF+RANK方式 |
|---|---|---|
| 数式 | 1セルで完結 | 作業列あり |
| 分かりやすさ | 難しい | 非常に分かりやすい |
| 保守性 | 低い | 高い |
| おすすめ | 個人用ファイル | 共有ファイル |
迷ったらIF+RANK方式を選べばOKです。
なぜRANK IFが存在しないのか?
RANK関数は「範囲全体での順位」を前提に設計されています。
そのため「条件付き順位」を実現するには、
- COUNTIFSで条件を付ける
- IFで対象を絞る
といった組み合わせで対応する必要があります。
まとめ
- RANK IF関数は存在しない
- グループ内順位は2つの方法で解決できる
- 実務では「分かりやすさ=正義」
Excelでは、「自分にしか読めない数式」より「誰でも理解できる構造」が重要です。
特に業務ファイルでは、IF+RANK方式が最も安全で再現性が高い方法です。












コメント