Power Queryエディター上で氏名の間の全角スペースを基準に文字を抽出したい場合、どうしたら良いですか?
では、詳細を解説していきますね。
目次[閉じる]
解説動画
の記事の内容は下記の動画「【パワークエリ#6】データクレンジング基本テクニック13選 – 元データを綺麗にするための不備修正の作業を自動化する」でも解説しています。
コメント欄の目次の時間部分をクリックすると該当の解説へジャンプできますよ!
はじめに
この記事はパワークエリの概要を把握していることが前提です。
パワークエリの概要は以下の記事をご参照ください。
「区切り記号の前のテキスト」・「区切り記号の後のテキスト」・「区切り記号の間のテキスト」コマンドとは、Power Queryエディター上で列内の各セルから区切り記号を基準に文字列を抽出する機能
「区切り記号の前のテキスト」・「区切り記号の後のテキスト」・「区切り記号の間のテキスト」コマンドは、クエリの新規作成ステップのうち、Step 2の「取得データを整形/加工(Transform)」に該当する機能です。

機能自体は、ワークシート上の関数の「TEXTBEFORE」・「TEXTAFTER」と似ています。
「区切り記号の前のテキスト」コマンドがTEXTBEFORE、「区切り記号の後のテキスト」コマンドがTEXTAFTER、「区切り記号の間のテキスト」コマンドがTEXTBEFORE+TEXTAFTERに相当。
TEXTBEFORE・TEXTAFTERの詳細は、別記事にまとめる予定。
クエリ内の一連の整形作業の中で、区切り記号を基準に文字列を抽出したい場合に「区切り記号の前のテキスト」・「区切り記号の後のテキスト」・「区切り記号の間のテキスト」コマンドを使いましょう。
区切り記号(文字)とは、「データ抽出/分割の目印となる文字」のこと。

「区切り記号の前のテキスト」・「区切り記号の後のテキスト」・「区切り記号の間のテキスト」コマンドを活用することで、Power Queryエディター上で列内の各セルから区切り記号を基準に文字列を抽出できます。
「区切り記号の前のテキスト」コマンドで区切り記号の前方を、「区切り記号の後のテキスト」コマンドで区切り記号の後方を、「区切り記号の間のテキスト」コマンドで2つの区切り記号の間の文字を抽出。
一例として、「氏名」列を対象に「区切り記号の前のテキスト」コマンドを使用し、全角スペースの前にある「氏」を抽出したものが以下です。

この通り、Power Queryエディター上で列内の各セルから、区切り記号の前方にある文字を抽出したステップを記録できました。
「区切り記号の前のテキスト」コマンドの場合、デフォルトのステップ名は「区切り記号の前の抽出されたテキスト」になる(クエリ内で2つ目以降の「区切り記号の前の抽出されたテキスト」ステップは連番が付加)。
「区切り記号の後のテキスト」コマンドの場合、デフォルトのステップ名は「区切り記号の後の抽出されたテキスト」。
「区切り記号の間のテキスト」コマンドの場合、デフォルトのステップ名は「区切り記号の間の抽出されたテキスト」。
後は、クエリ新規作成ステップのStep 2とStep 3を行いましょう。
これにより、クエリに記録した「区切り記号の前のテキスト」・「区切り記号の後のテキスト」・「区切り記号の間のテキスト」コマンドのステップを自動化できます。
「区切り記号の前の抽出されたテキスト」・「区切り記号の後の抽出されたテキスト」・「区切り記号の間の抽出されたテキスト」ステップを記録後、対象の列名を変更すると、クエリ更新時にエラーになるため注意(対処法は後述)。
クエリの新規作成ステップのStep 2に役立つ各種コマンドや、Step 3の手順の詳細を知りたい方は、パワークエリの概要記事をご参照ください。
【Excel】パワークエリ(Power Query)とは?できることや使い方入門【動画あり】
「区切り記号の前のテキスト」・「区切り記号の後のテキスト」コマンドの使用手順
「区切り記号の前のテキスト」・「区切り記号の後のテキスト」コマンドの場合は、以下の手順です。

- 抽出したい列を選択
※今回は「氏名」列 - リボン「変換」タブをクリック
- 「抽出」をクリック
- 「区切り記号の前のテキスト」 or 「区切り記号の後のテキスト」をクリック
※今回は「区切り記号の前のテキスト」 - 任意の区切り記号を入力
※今回は「全角スペース」 - 「OK」をクリック
手順①の列を上書きしたくない場合、手順②はリボン「列の追加」タブをクリック。
※同じコマンドだが、手順①の列を残し、抽出結果を新たな列として追加。
手順④は、区切り記号の前後どちらの文字を抽出したいかによって使い分け。
手順⑤は、手順①の各値の区切り記号と全角/半角も含めて一致させる必要あり(不一致の場合、抽出されず元の値が残る)。
「区切り記号の間のテキスト」コマンドの使用手順
「区切り記号の間のテキスト」コマンドの場合は、以下の手順です。

- 抽出したい列を選択
※今回は「氏名」列 - リボン「変換」タブをクリック
- 「抽出」をクリック
- 「区切り記号の間のテキスト」をクリック
- 任意の開始区切り記号を入力
※今回は「全角スペース」 - 任意の終了区切り記号を入力
※今回は「全角スペース」 - 「OK」をクリック
手順①の列を上書きしたくない場合、手順②はリボン「列の追加」タブをクリック。
※同じコマンドだが、手順①の列を残し、抽出結果を新たな列として追加。
手順⑤⑥は、別々の区切り記号を設定することも可能。
手順⑤⑥は、手順①の各値の区切り記号と全角/半角も含めて一致させる必要あり(不一致の場合、抽出されず元の値が残る)。
【参考】詳細設定オプション
「区切り記号の前のテキスト」・「区切り記号の後のテキスト」・「区切り記号の間のテキスト」ダイアログに用意されている「詳細設定オプション」をクリックすると、抽出の条件をより詳細に設定することが可能です。
それぞれ順番に解説します。
区切り記号のスキャン
詳細設定オプションの「区切り記号のスキャン」は、各セルの区切り記号の探し方を変更できます。
「区切り記号の間のテキスト」ダイアログの場合、開始区切り記号・終了区切り記号それぞれを変更可能。
デフォルトは「入力の先頭から」となっており、各セルの先頭から右方向へ区切り記号を探す設定です。

もし、末尾から左方向に変更したい場合は「入力の末尾から」へ変更しましょう。
スキップする区切り記号の数
詳細設定オプションの「スキップする区切り記号の数」は、区切り記号が複数ある場合、2つ目以降の区切り記号を抽出の基準に変更できます。
「区切り記号の間のテキスト」ダイアログの場合、開始区切り記号・終了区切り記号それぞれを変更可能。
デフォルトは「0」となっており、「区切り記号のスキャン」の結果、1つ目の区切り記号が抽出基準になる設定です。

もし、2つ目以降の区切り記号を抽出基準に変更したい場合、スキップする数を数値で入力しましょう。
例:2つ目の区切り記号を抽出基準にしたい場合、「1」を入力(1つ目をスキップし、2つ目が基準になる)。
「区切り記号の前の抽出されたテキスト」・「区切り記号の後の抽出されたテキスト」・「区切り記号の間の抽出されたテキスト」ステップの変更手順
「区切り記号の前のテキスト」・「区切り記号の後のテキスト」・「区切り記号の間のテキスト」コマンドで記録した「区切り記号の前の抽出されたテキスト」・「区切り記号の後の抽出されたテキスト」・「区切り記号の間の抽出されたテキスト」ステップを後から変更する場合、変更したい内容が抽出条件(区切り記号、詳細設定オプション)か、それ以外かで手順が異なります。
それぞれの手順を順番に解説していきましょう。
抽出条件(区切り記号、詳細設定オプション)
抽出条件(区切り記号、詳細設定オプション)のみを後から変更したい場合、以下の手順で変更しましょう。

- 「区切り記号の前の抽出されたテキスト」 or 「区切り記号の後の抽出されたテキスト」 or 「区切り記号の間の抽出されたテキスト」ステップの歯車マークをクリック
- 任意の箇所を修正
- 「OK」をクリック
手順①のステップ名は「区切り記号の前のテキスト」・「区切り記号の後のテキスト」・「区切り記号の間のテキスト」コマンドのデフォルトの名前(自身でリネームしている場合は別表記)。
手順①はステップ名をダブルクリックでもOK。
手順①で起動した「最初の文字を抽出する」・「最後の文字を抽出する」・「テキスト範囲を抽出する」ダイアログは、ステップに設定した内容がセットされた状態。
その他
抽出条件以外の内容(抽出対象の列や抽出に使うコマンド等)を後から変更したい場合、以下の手順で変更しましょう。

- 「区切り記号の前の抽出されたテキスト」 or 「区切り記号の後の抽出されたテキスト」 or 「区切り記号の間の抽出されたテキスト」ステップを削除(「×」をクリック)
- 再度「区切り記号の前の抽出されたテキスト」 or 「区切り記号の後の抽出されたテキスト」 or 「区切り記号の間の抽出されたテキスト」ステップを記録
手順①のステップ名は、「区切り記号の前のテキスト」・「区切り記号の後のテキスト」・「区切り記号の間のテキスト」コマンドのデフォルトの名前(自身でリネームしている場合は別表記)。
サンプルファイルで練習しよう!
可能であれば、以下のサンプルファイルをダウンロードして、実際に操作練習をしてみてください。
サンプルファイル_PowerQueryデータ整形_抽出_区切り記号.xlsx
※サンプルファイルのダウンロードには無料メルマガに登録いただく必要があります。
(上記リンクから登録フォームへ遷移します)
ブックを開いたら、「社員マスタ(抽出_文字数)」クエリを編集(Power Queryエディター起動)し、次の手順を実施してください(今までの解説のまとめです)。
ブック起動時、「セキュリティの警告」メッセージが表示された場合は「コンテンツの有効化」をクリック。
- 抽出したい列を選択
※今回は「氏名」列 - リボン「変換」タブをクリック
- 「抽出」をクリック
- 「区切り記号の前のテキスト」 or 「区切り記号の後のテキスト」をクリック
※今回は「区切り記号の前のテキスト」 - 任意の区切り記号を入力
※今回は「全角スペース」 - 「OK」をクリック
本記事の解説と同じ結果になればOKです!
さいごに
いかがでしたでしょうか?
「区切り記号の前のテキスト」・「区切り記号の後のテキスト」・「区切り記号の間のテキスト」コマンドを活用することで、Power Queryエディター上で列内の各セルから区切り記号を基準に文字列を抽出できます。
データ抽出のオーソドックスな処理の1つのため、ぜひ基本テクニックとして覚えておきましょう!
なお、パワークエリの各種テクニックは、私の拙著でも体系的に解説していますので、こちらも参考にしてみてください。
ご参考になれば幸いですm(_ _)m
具体的には、文字数を基準に抽出する「最初の文字」・「最後の文字」・「範囲」コマンドです。
作業目的やデータ内容に応じて、これらのコマンドをうまく使い分けできるようになりましょう!


コメント Comments
コメント一覧
コメントはありません。
トラックバックURL
https://excel-master.net/data-shaping/power-query-data-extraction-delimiter/trackback/