スポンサーリンク
下図のA列のような、まちまちの桁数のコードについて、先頭に「0」文字を埋めて6桁などに統一したいということはよくある。
通常のExcel関数では、図のようにTEXT関数を使い
“000000”
という6桁数値の書式を指定するというのが定番の方法だ。
今回はこれを、PowerQueryで実現する方法を扱う。
カスタム列の追加まで
ではPowerQueryのエディタ画面。
今回のような、数値に見える形式のコードの場合は、そのデータ形式を「テキスト」に変更しておこう。
これまでの記事で、PowerQueryの様々なメニューから、列の結合など予め用意された機能を使う方法を取り上げてきた。
しかし今回の、指定桁数になるまで「0」文字を埋めるような操作には、そういう専用操作メニューは無い(はず)。
なので、それ用の関数を知っておいて、自分で書く必要がある。
では、その関数を自分で自由に組み込む用に、
リボン「列の追加」
→カスタム列
としよう。
Text.PadStartで文字埋め
では今回の、「あるテキスト値に対して、指定した桁数になるまで先頭に特定の文字列を埋める」のは、専用関数の
Text.PadStart
だ。
Text.PadStart( 文字埋めの対象にするテキスト値 , 指定する桁数 , 埋めたい文字列 )
という形式で使用する。
この
Text.PadStart
の文字をそのままコピペ等しても良いが、とりあえず手入力してみる。
「カスタム列」の、式を入力する画面にて、最初の
text
までの文字を手入力してみよう。
関数の候補が表示されるので、その中から
Text.PadStart
を、クリックするなどして入力する。
なんか上の方に、分かりやすいとは言い難いが関数の説明も出てくる。
Text.PadStart( 文字埋めの対象にするテキスト値 , 指定する桁数 , 埋めたい文字列 )
の最初の引数
文字埋めの対象にするテキスト値
は、今回の場合は「コード」列なので、右端にある「コード」の欄をダブルクリックなどして入力する。
そして
Text.PadStart( 文字埋めの対象にするテキスト値 , 指定する桁数 , 埋めたい文字列 )
の
指定する桁数 , 埋めたい文字列
を、
6 , 0
と入力して、下図のようになったら「OK」を押す。
意図した通り、6桁になるように「0」文字が埋められた。
今回のText.PadStart関数は、指定した桁数になるまで「先頭に」文字を埋め込むもので、逆に「末尾に」文字を埋め込むのには
Text.PadEnd
という関数が用意されている。
個人的には使い所は分からないし、Text.PadStartと要領は同じなので、説明は省略する。
別解(エディタの既存機能のみで解決)
今回の記事は、Text.PadStartを使うことありきで書いててちょっと気付かなかったけど、TwitterでYt-oltさんから教えていただいた別解。
まず
リボン「変換」タブ
→「書式」
→「プレフィックスの追加」
とする。
プレフィックスというのが、先頭に追加する文字のことで、逆に末尾に追加するのは「サフィックス」だ。
そして、何の文字を追加するか入力させられる。
今回は最終的に6文字に統一するわけだけど、それに十分な文字数つまり5文字とか6文字以上の「0」文字を入れよう。
そして
リボン「変換」タブ
→「抽出」
→「最後の文字」
とする。
最後の抽出したい文字数に「6」を入れて「OK」を押せば終わり。
考えてみれば簡単なことでした。
スポンサーリンク