Power BI で順位を出す方法(RANKX):同率で順位が飛ぶ・全部が1位になるとき
濵口 翔長崎で、Power BI のつまずきを記録しています確認日2026年10月27日。
Power BI Desktop 2.159.883.0(日本語、 Windows)、 ダミーの データ6行で 確かめました。 確認できていない ことは、 末尾に まとめました。
商品別のRANKX を
結論
(30秒版)
順位 = RANKX(ALL(rank_demo[商品]), [売上合計])で、売上の 大きい順に、 順位が 付きました。 - 同率の
とき、 既定(Skip)では、「1・2・2・4」のように、 次の 。順位が 飛びます Denseを指定すると、 「1・2・2・3」に なりました。 ALLを付けずに、 RANKX(rank_demo, [売上合計])と書くと、全部が 1位 になりました。
使ったデータ
6商品の
| 商品 | 売上 |
|---|---|
| コーヒー | 800 |
| 緑茶 | 500 |
| 紅茶 | 500 |
| 水 | 300 |
| 牛乳 | 300 |
| ジュース | 200 |
公式の説明
Microsoft Learn のRANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]]) です。
order: 省略すると、降順(いちばん大きい 値が 1位)。 ties(同率の扱い ): 省略すると Skip。 同率の あとの 順位は、 「同率の 順位+同率の 数」に なる (例: 5つが 11位なら、 次は 16位)。Dense に すると、 同率の あとの 順位は、 「次の 順位」 (例: 5つが 11位なら、 次は 12位)。
作ったメジャー
売上合計 = SUM(rank_demo[売上])
順位(既定) = RANKX(ALL(rank_demo[商品]), [売上合計])
順位(Dense) = RANKX(ALL(rank_demo[商品]), [売上合計], , DESC, Dense)
順位(ALLなし) = RANKX(rank_demo, [売上合計])
テーブルの
実機で確かめた結果

| 商品 | 売上合計 | 順位(既定) | 順位(Dense) | 順位(ALLなし) |
|---|---|---|---|---|
| コーヒー | 800 | 1 | 1 | 1 |
| 紅茶 | 500 | 2 | 2 | 1 |
| 緑茶 | 500 | 2 | 2 | 1 |
| 牛乳 | 300 | 4 | 3 | 1 |
| 水 | 300 | 4 | 3 | 1 |
| ジュース | 200 | 6 | 4 | 1 |
同率のとき、順位が飛ぶ(既定)
500 が
Dense にすると、飛ばない
Dense を
ALL を付けないと、全部が1位
RANKX(rank_demo, [売上合計]) とALL(rank_demo[商品]) で、
合計行は、1になる
テーブルの
どちらを使うか
| やりたい | 書き方 |
|---|---|
| 同率は | 既定(Skip) |
| 同率でも、 | Dense |
この記事で確認できたこと・できていないこと
確認日: 2026年10月27日。
確認できた
- 6行の
データで、 既定(1・2・2・4・4・6)、 Dense(1・2・2・3・3・4)、 ALL なし(全部 1)に なった こと。 - 公式の
説明(Skip と Dense の 違い)と、 実機の 動きが 一致した こと。
確認できていない
- 複数の
列(店舗と 商品の 組み合わせ)での 順位、 スライサーで 絞り込んだ ときの 順位の 動き(ALLSELECTED を 使う 場合)。 - 昇順(
ASC)での順位。 - 売上が、
空白(BLANK)の 行が ある 場合(公式には、 「空白は 0と して 扱われる」と 書かれています)。 - 大きな
データでの 速さ、 DirectQuery、 Power BI サービスでの 動き。 - 「ALL を
付けないと 全部 1位に なる」理由の 説明は、 私の 推測です。
参考
- Microsoft Learn: RANKX — https://learn.microsoft.com/dax/rankx-function-dax