Excel PowerQuery 指定桁数になるまで文字を埋める方法

Microsoft Excel

スポンサーリンク

下図のA列のような、まちまちの桁数のコードについて、先頭に「0」文字を埋めて6桁などに統一したいということはよくある。

通常のExcel関数では、図のようにTEXT関数を使い
“000000”
という6桁数値の書式を指定するというのが定番の方法だ。

今回はこれを、PowerQueryで実現する方法を扱う。

カスタム列の追加まで

ではPowerQueryのエディタ画面。
今回のような、数値に見える形式のコードの場合は、そのデータ形式を「テキスト」に変更しておこう。

PowerQuery エディターの基礎

これまでの記事で、PowerQueryの様々なメニューから、列の結合など予め用意された機能を使う方法を取り上げてきた。

Excel PowerQuery 列を結合する

しかし今回の、指定桁数になるまで「0」文字を埋めるような操作には、そういう専用操作メニューは無い(はず)。
なので、それ用の関数を知っておいて、自分で書く必要がある。

では、その関数を自分で自由に組み込む用に、

リボン「列の追加」
カスタム列

としよう。

Excel PowerQuery 計算式や条件を入れたオリジナルの項目列を追加する

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」を押せば終わり。

考えてみれば簡単なことでした。

スポンサーリンク