DAX>REPT関数で不足桁を0埋めしてスライサ順序を正しく表示|IT小技6

目次

この記事で分かること

スライサの項目が増えても順序を正しく表示する方法
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の実務に、ぜひ役立ててください(終わり)

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

 氷河期世代SEです。ITなどに関するマメ知識から、氷河期世代の生き方まで、読者に役立つ情報を発信します。
 仕事では資格を持たず、師匠もいない環境で身に付けた独学スキルだけが武器です。群れを嫌う一匹狼、いや狼ほど強くないので一匹猫(Lone Cat)として生きています。
 家庭では46歳で第一子、48歳で第二子を授かり、晩婚夫婦が子育て奮闘中です。趣味は料理、自動車、歴史、グルメ、温泉など幅広く色々やってます。
 2025年にブログをはじめました。老眼と同時デビューです。

コメント

コメントする

CAPTCHA


目次