パワークエリはとても便利です。利用者もどんどん増えていると思います。ただ、パワークエリの言語のM言語となると「何ができるの?」となると思いますので、今回は実践での活用例を紹介したいと思います
今回は下の画像の表にある商品に、「グループ別に1から始まる番号」で採番した連番を付与した商品IDを付けたいと思います

目次
今回のポイント
今回はM言語を使用して「グループ別に連番」を付与した後に、”0”で桁数を揃えます
グループ別に連番を付与する方法については過去の記事を参照してください!
こちらは、グループ化機能とM関数のTable.AddIndexColumnを組み合わせます!!
では「”0”で桁数を揃える」という点について、詳細に解説します
例えば、連番が2の場合には「002」にします。もし10の場合には「010」とします
こちらの桁数を揃える方法については、「例からの列」機能を活用する方法もありますが、今回はM関数の「Text.PadStart」を使用します
このText.PadStartは下のように使います
=Text.PadStar(文字列,桁数,”補う文字列”)
今回は、”0”を補って下の画像のように指定の桁数にします

上の画像では、”1”に”0”を4つ補って5桁にしています
それでは、今回のポイントとなるM関数/Text.PadStartを解説したところで、実際の商品コードの設定に入りたいと思います
文字コードの付与
今回は、商品グループがCDの場合には「A」、DVDの場合には「B」という風に、商品コードの一桁目を商品グループで表現します
この場合は、条件列を使用するのが一番、手っ取り早いです

例えば、商品グループ名がCDに等しい場合は、Aを出力するといった具合で条件列を設定します

グループ別連番の付与
こちらについての詳細については、過去の記事をご参照願います
概要だけを解説しますと、まずは「すべての行」にてグループ化を行います

すると、グループ別にテーブルが作成されます

その後、カスタム列・作成画面でTable.AddIndexColumnを追加してグループ別に連番を作成します

上の画面でカスタム列を作成した結果が次の画像です

M関数により”0”を補う
では、グループ別に連番を作成できたので、グループコード/A,B,Cと連番を組み合わせて4桁の商品コードを作成します
グループコード以降は”0”を補って3桁(全体で4桁)にします
M関数/Text.PadStartは次のように使用します
=Text.PadStart(Text.From([連番]),3,”0″)

1番目の引数で「Text.From関数」にて文字列にするのがポイントです
これで”0”を補った3桁が作成できました

この3桁をグループコード/と結合(列のマージ)させれば4桁の商品コードは完成です

次の画像が4桁の商品コードの完成後です

<まとめ>
今回はM言語を使用して、グループ別に1からはじまる連番を採番した上で商品コードを作成しました
ポイントとしてはM関数/Text.PadStartを使用して”0”を指定桁数になるように補う点になります
M関数を使用しない方法もありますが、M関数を使用した方がミスなく作成が行えます
最後に、グループ別に連番を採番する技術はとても実践的な技術です
ぜひ早めに習得しておきましょう!
コメントを残す