この記事で分かること
スライサの項目が増えても順序を正しく表示する方法
DAX関数の実践的な使い方|REPT関数を中心に、MAX関数・LEN関数・RIGHT関数の組み合わせ
課題|スライサ項目数が桁上がりすると順序が崩れる
以下(1)~(3)のような状況を想定します。
(1) スライサ表示用に「項目」と「順序」が入力されたテーブルがある
(2) スライサ用に列を追加し、次の式を作成する
列1_スライサ項目 = [順序] & “_” & [項目]
<項目テーブル(列1追加後)>

(3) スライサを「昇順で並べ替え」に設定する
(点3つメニュー → 軸の並べ替え → 昇順で並べ替え)

ところが、この方法には不具合が発生します。
項目数が増えると、順序が正しく並ばない
下図赤枠のように順序が10以上になれば正しく並びません

そこで下の式のように「0」を付けて対応します
列2_スライサ項目 = RIGHT(“0” & [順序], 2) & “_” & [項目]
しかし下のように、3桁になると順序が狂います
<3桁のデータ例>

<スライサ不具合(赤枠)>

そこで本記事では、順序の最大値に応じてゼロ埋め数を自動調整し、常に正しい並び順を保つ方法をご紹介します。
答え|ポイントはREPT関数でゼロ埋め
列3【解】_スライサ項目 =
//LEN関数で文字数を返す
VAR Ketasu = LEN(
//MAX関数で順序の最大値を取得
MAX(‘項目テーブル'[順序])
)
//REPT関数で0埋めする
RETURN
RIGHT(REPT(“0”, Ketasu) & [順序], Ketasu) & “_” & [項目]
使用環境:Power BI Desktop 2.146.1133.0 64-bit (2025年8月)
解説
この式のポイントは次の3つです。
- MAX関数:[順序]列の最大値を取得
最大値をLEN関数に渡すことで必要な桁数を求めます。 - LEN関数:最大値が何桁かを計算
数値を文字列に変換したときの長さ(桁数)を返します。最大値の桁数を動的に取得できるのがポイントです。 - REPT関数:桁数に応じて0を繰り返し生成
指定した文字を繰り返す関数です。
ここでは “0” を Ketasu 回繰り返し、十分な桁数のゼロを準備します。
REPT関数を使うことで、将来的に桁数が増えても対応可能になります。
最終的にRIGHT関数で必要な桁数に揃えて、正しく順序付きの文字列を作ります。
まとめ
- 順序番号は桁上がりで順序が崩れるため注意が必要です。
- 2桁固定の0埋めでは限界があり、3桁以上に対応できません。
- MAX関数+LEN関数+REPT関数+RIGHT関数を組み合わせることで、最大桁数に応じた動的な0埋めが可能です。
- REPT関数を活用することで、スライサの並び順を常に正しく維持できます。
PowerBIの実務に、ぜひ役立ててください(終わり)

コメント