テキスト列を整形する ― 書式・置換・トリム・抽出・分割・マージ

このページのゴール

Power Queryの「変換」タブと「列の追加」タブにあるテキスト操作機能を網羅的に理解し、「Excel関数でいうとどれに対応するか」を把握した上で、GUIだけで目的の加工ができるようになることです。

大前提:「変換」タブ vs 「列の追加」タブ

テキスト操作のボタン(書式、抽出、分割など)は「変換」タブと「列の追加」タブの両方にあります。前ページでも触れましたが、この違いはテキスト操作で特に重要です。

タブ動作使いどころ
変換元の列のデータが書き換わる(上書き)元データが不要で、変換後のデータだけ残したいとき
列の追加元の列はそのまま残り、新しい列が右端に追加される元データを参照として残しておきたいとき、確認しながら作業したいとき

迷ったら「列の追加」タブで操作して、確認できたら元の列を削除するのが安全です。

トリムとクリーン ― 見えないゴミを取り除く

Excelの TRIM関数・CLEAN関数 に対応する機能です。データベースやWebから取り込んだデータには、目に見えない余計な空白や制御文字(改行コードなど)が含まれていることが非常に多く、これを放置すると VLOOKUP に相当するマージ操作で一致しない原因になります。

トリミング ― 先頭と末尾の空白を除去

操作手順

1. 対象の列のヘッダーをクリックして選択します。
2. 変換 タブ → 書式 → トリミング をクリックします。
3. 先頭と末尾の半角スペース・全角スペースが除去されます。

Before

氏名
 田中 太郎 
佐藤 花子
鈴木 一郎

After(トリミング後)

氏名
田中 太郎
佐藤 花子
鈴木 一郎
注意:トリミングは先頭と末尾だけ
Excelの TRIM関数 は「単語間の連続スペースを1つにする」機能もありますが、Power Queryのトリミングは先頭と末尾の空白のみを除去します。文字列の途中にある連続スペースを整理するには、「値の置換」で「 」(スペース2個)を「 」(スペース1個)に繰り返し置換する方法を使います。

クリーン ― 印刷できない制御文字を除去

操作手順

1. 対象の列のヘッダーをクリックして選択します。
2. 変換 タブ → 書式 → クリーニング をクリックします。
3. 改行コード(CR/LF)やタブ文字など、ASCIIコード0〜31の制御文字が除去されます。

実務のコツ:トリム→クリーンの順番でセットで実行
テキスト列に対して「クリーニング → トリミング」の順で適用するのを定番にすると、ほとんどの「見えないゴミ」を一掃できます。取り込み直後のルーティンに加えてもよいくらい、使用頻度の高い操作です。

書式変換 ― 大文字・小文字・その他

アルファベットの大文字・小文字を揃えたり、プレフィックス/サフィックスを追加したりする操作です。

GUI操作Excel関数の対応動作例:入力 → 出力
変換 → 書式 → 小文字LOWERすべてを小文字にTOKYO → tokyo
変換 → 書式 → 大文字UPPERすべてを大文字にtokyo → TOKYO
変換 → 書式 → 各単語の先頭文字を大文字にするPROPER各単語の先頭だけ大文字john smith → John Smith
変換 → 書式 → プレフィックスの追加"固定文字"&A1先頭に固定文字列を追加001 → ID-001
変換 → 書式 → サフィックスの追加A1&"固定文字"末尾に固定文字列を追加report → report.pdf

操作手順(例:プレフィックスの追加)

1. 対象の列のヘッダーをクリックして選択します。
2. 変換 タブ → 書式 → プレフィックスの追加 をクリックします。
3. ダイアログに追加したい文字列(例:「ID-」)を入力して「OK」。
4. すべての行の先頭に「ID-」が追加されます。

値の置換 ― 文字列の検索と置き換え

ExcelのSUBSTITUTE関数に対応する機能です。ExcelのSUBSTITUTEと同様に、セル全体ではなく文字列の一部を置き換えます。

操作手順

1. 対象の列のヘッダーをクリックして選択します。
2. ホーム タブ → 値の置換(または右クリック →「値の置換」)をクリックします。
3. 「検索する値」に元の文字列、「置換後」に新しい文字列を入力して「OK」。

置換の実用パターン

目的検索する値置換後備考
ハイフンを除去-(空欄)電話番号「03-1234-5678」→「0312345678」
表記の統一(株)株式会社部分一致で置換される
全角スペースを半角に (全角スペース) (半角スペース)見た目では区別しにくいので注意
nullを特定の値にnull(任意の値)「詳細オプション」で「セル全体を照合する」にチェック
「値の置換」は部分一致がデフォルト
Power Queryの値の置換は部分一致で動作します。たとえば「東」を「西」に置換すると、「東京」が「西京」になります。セル全体が完全に一致する場合だけ置換したいときは、ダイアログの左下にある「詳細オプション」→「セル全体の内容を照合する」にチェックを入れてください。

抽出 ― 文字列の一部を取り出す

ExcelのLEFT・RIGHT・MID関数に相当する操作です。「変換」タブの「抽出」で実行すると元の列が書き換わり、「列の追加」タブの「テキストから抽出」で実行すると新しい列ができます。

メニューExcel関数の対応パラメータ
最初の文字 LEFT 取り出す文字数 「東京都新宿区」から3文字 →「東京都」
最後の文字 RIGHT 取り出す文字数 「ABC-001」から3文字 →「001」
範囲 MID 開始インデックスと文字数 「ABC-001-XY」のインデックス4から3文字 →「001」
区切り記号の前のテキスト LEFT + FIND の組合せ 区切り記号 「田中-太郎」の「-」より前 →「田中」
区切り記号の後のテキスト MID + FIND の組合せ 区切り記号 「田中-太郎」の「-」より後 →「太郎」
区切り記号の間のテキスト 複雑な関数の組合せ 開始と終了の区切り記号 「【重要】お知らせ」の「【」と「】」の間 →「重要」
長さ LEN なし 「Hello」→ 5

操作手順(例:「範囲」で中間を取り出す)

1. 対象の列のヘッダーをクリックして選択します。
2. 変換 タブ → 抽出 → 範囲 をクリックします。
3. 「開始インデックス」と「文字数」を入力して「OK」。

最重要注意:開始インデックスは「0」始まり
ExcelのMID関数は1文字目を「1」と数えますが、Power Queryの「範囲」は0から数えます。「ABC-001」の「0」を取り出したい場合、Excelなら =MID(A1, 5, 1) ですが、Power Queryでは開始インデックス「4」です。最初は混乱しますが、必ず覚えてください。

「抽出」と「分割」の使い分け

どちらも文字列の一部を取り出す操作ですが、目的が違います。「抽出」は1つの値だけを取り出す操作で、結果は1列です。「分割」は1つの列を複数の列に分ける操作です。「氏名」列から姓と名を別々の列にしたい場合は「分割」、商品コードの先頭3文字だけ欲しい場合は「抽出」を使います。

列の分割 ― 1つの列を複数に分ける

ExcelではLEFT + MID + FIND の複雑な組み合わせで行っていた「列の分割」が、Power QueryではGUIだけで完了します。

区切り文字で分割する

操作手順

1. 対象の列のヘッダーをクリックして選択します。
2. ホーム タブ → 列の分割 → 区切り記号による分割(または変換タブからも可)をクリックします。
3. 区切り記号を選択または入力します(カンマ、スペース、ハイフン、タブ、カスタムなど)。
4. 「分割位置」を選択します:

選択肢動作例:「A-B-C」をハイフンで分割
左端の区切り記号最初に見つかった区切り文字で2列に分割「A」「B-C」
右端の区切り記号最後に見つかった区切り文字で2列に分割「A-B」「C」
出現する各区切り記号すべての区切り文字で分割「A」「B」「C」

5. 「OK」をクリックすると、元の列が分割後の列に置き換わります。

文字数で分割する

操作手順

1. 対象の列のヘッダーをクリックして選択します。
2. ホーム タブ → 列の分割 → 文字数による分割 をクリックします。
3. 文字数を入力します(例:「3」)。
4. 分割方法を選択します:

選択肢動作例:「ABCDEF」を3文字で分割
左端から1回左から指定文字数の位置で1回だけ分割「ABC」「DEF」
右端から1回右から指定文字数の位置で1回だけ分割「ABC」「DEF」
繰り返し指定文字数ごとに繰り返し分割「ABC」「DEF」(6文字÷3=2列)

5. 「OK」をクリックします。

実務でよく使うパターン
固定長データ(銀行の振込データやCOBOLシステムの出力など)は「文字数で分割」→「繰り返し」が便利です。たとえば「銀行コード(4桁) + 支店コード(3桁) + 口座番号(7桁)」のような固定長は、4, 3, 7 で順に分割できます(ただし1回の操作では均一な文字数でしか分割できないため、不均一な場合は複数回に分けるか、「範囲」で抽出する方法を使います)。
分割後の列名と型に注意
分割すると自動的に「列名.1」「列名.2」のような列名が付きます。また、分割後の列のデータ型はすべて「テキスト」になります。数値として扱いたい列は型変更を忘れずに行ってください。

詳しくは → 列の分割 専用ページ

列のマージ ― 複数の列を1つに結合する

Excel の CONCATENATE関数 や & 演算子 に対応する操作です。姓と名を1列にまとめたり、年・月・日の列を結合して日付文字列にしたりする場面で使います。

操作手順

1. 結合したい列をCtrl+クリックで複数選択します(選択した順番に結合されます)。
2. 変換 タブ → 列のマージ(または列の追加タブの「列のマージ」)をクリックします。
3. 区切り記号を選択します(スペース、カンマ、なし、カスタムなど)。
4. 新しい列名を入力します(例:「氏名」)。
5. 「OK」をクリックします。

Before

田中太郎
佐藤花子

After(区切り記号:スペース)

氏名
田中 太郎
佐藤 花子
「変換」タブのマージは元の列が消える
「変換」タブの「列のマージ」を実行すると、選択した複数の列が1つの列に置き換わります(元の列は消えます)。元の列を残したい場合は「列の追加」タブの「列のマージ」を使ってください。
数値型の列をマージする場合
マージ対象に数値型やBool型の列が含まれると、マージに失敗したりnullが出たりすることがあります。あらかじめ対象列のデータ型をテキスト型に変更してからマージしてください。

Excel関数との対応まとめ

ここまでの内容を、Excel関数との対応表にまとめます。ブックマークしておくと便利です。

Excel関数Power Query GUI操作M言語(参考)注意点
TRIM変換 → 書式 → トリミングText.Trim([列])先頭末尾のみ。途中の連続空白は置換で
CLEAN変換 → 書式 → クリーニングText.Clean([列])ASCII 0〜31の制御文字を除去
UPPER変換 → 書式 → 大文字Text.Upper([列])
LOWER変換 → 書式 → 小文字Text.Lower([列])
PROPER変換 → 書式 → 各単語の先頭…Text.Proper([列])
SUBSTITUTEホーム → 値の置換Text.Replace([列],"旧","新")部分一致がデフォルト
LEFT変換 → 抽出 → 最初の文字Text.Start([列], n)
RIGHT変換 → 抽出 → 最後の文字Text.End([列], n)
MID変換 → 抽出 → 範囲Text.Middle([列], start, n)0始まり
LEN変換 → 抽出 → 長さText.Length([列])
CONCATENATE / &変換 → 列のマージText.Combine({[列1],[列2]}, "区切")数値列は先にテキスト型に変換

実践例 ― CSV住所録のクリーニング

あるCSVから取り込んだ住所録データを、テキスト操作だけで綺麗に整えてみましょう。

Before(取り込んだ生データ)

氏名電話番号商品コード
 たなか たろう 03-1234-5678ABC-001-XY
 さとう はなこ090-9876-5432DEF-002-ZZ

やりたいこと

氏名の前後の空白を除去し、各単語の先頭を大文字にしたい(今回はカタカナのためスキップ)。電話番号のハイフンを除去して数字だけにしたい。商品コードからカテゴリ部分(先頭3文字)と番号部分(中間3文字)を別列に取り出したい。

手順

Step 1:氏名をトリミング

「氏名」列を選択 → 変換 → 書式 → トリミング

Step 2:電話番号のハイフンを除去

「電話番号」列を選択 → ホーム → 値の置換 → 検索「-」、置換後「」(空欄)

Step 3:商品コードからカテゴリを抽出

「商品コード」列を選択 → 列の追加 → テキストから抽出 → 最初の文字 → 文字数「3」 → 列名を「カテゴリ」に変更

Step 4:商品コードから番号を抽出

「商品コード」列を選択 → 列の追加 → テキストから抽出 → 範囲 → 開始インデックス「4」、文字数「3」 → 列名を「番号」に変更

After(処理完了後)

氏名電話番号商品コードカテゴリ番号
たなか たろう0312345678ABC-001-XYABC001
さとう はなこ09098765432DEF-002-ZZDEF002

適用したステップは4つだけ。このクエリを保存しておけば、次回以降は同じ形式のCSVを差し替えて「更新」するだけで同じ処理が自動適用されます。これがPower Queryの真価です。

まとめ

テキスト操作はPower Queryで最も使用頻度が高い変換カテゴリです。このページで紹介した操作を整理すると、大きく4つのグループに分けられます。

クリーニング系(トリミング・クリーニング)は、データを取り込んだ直後に必ず行う「衛生管理」。書式変換系(大文字・小文字・プレフィックス/サフィックス)は、表記の統一に使う。抽出・分割系(最初/最後/範囲の文字、区切り文字で分割、文字数で分割)は、1つの列から必要な情報を取り出す。結合系(列のマージ・値の置換)は、データを組み替えて使いやすい形にする。

最も注意すべきは「範囲」の開始インデックスが0始まりという点と、「値の置換」は部分一致がデフォルトという点です。この2つさえ覚えておけば、テキスト操作で困ることはほとんどありません。