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

機能自体は、ワークシート上の関数の「LEFT」・「RIGHT」・「MID」と似ています。
「最初の文字」コマンドがLEFT、「最後の文字」コマンドがRIGHT、「範囲」コマンドがMIDに相当。
クエリ内の一連の整形作業の中で、文字数を基準に文字列を抽出したい場合に「最初の文字」・「最後の文字」・「範囲」コマンドを使いましょう。

「最初の文字」・「最後の文字」・「範囲」コマンドの活用により、Power Queryエディター上で文字数を基準に列内の各セルから文字列を抽出できます。
「最初の文字」コマンドで先頭から、「最後の文字」コマンドで末尾から、「範囲」コマンドで任意の開始位置から指定の文字数を抽出。
一例として、「氏名」列を対象に「最初の文字」コマンドを使用し、最初の2文字を抽出したものが以下です。

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

- 抽出したい列を選択
※今回は「氏名」列 - リボン「変換」タブをクリック
- 「抽出」をクリック
- 「最初の文字」 or 「最後の文字」をクリック
※今回は「最初の文字」 - 抽出したい文字数を入力
※今回は「2」 - 「OK」をクリック
手順①の列を上書きしたくない場合、手順②はリボン「列の追加」タブをクリック。
※同じコマンドだが、手順①の列を残し、抽出結果を新たな列として追加。
手順④は、各セルの先頭と末尾のどちらから抽出したいかによって使い分け。
「範囲」コマンドの使用手順
「範囲」コマンドの場合は、以下の手順です。

- 抽出したい列を選択
※今回は「氏名」列 - リボン「変換」タブをクリック
- 「抽出」をクリック
- 「範囲」をクリック
- 任意の開始位置を入力
※今回は「3」 - 抽出したい文字数を入力
※今回は「3」 - 「OK」をクリック
手順①の列を上書きしたくない場合、手順②はリボン「列の追加」タブをクリック。
※同じコマンドだが、手順①の列を残し、抽出結果を新たな列として追加。
【参考】「範囲」コマンドとMID関数の違い
「範囲」コマンドとワークシート関数のMIDとの違いは、開始位置から抽出されるか否かです(「範囲」コマンドの方は含まれない)。

つまり、Power Queryエディター上の「範囲」コマンドを使う場合は、MID関数よりも1文字少なく開始位置を設定する必要があるため、ご注意ください。
念のため、プレビューウィンドウでステップ記録後の結果を確認しながら対応しましょう。
「抽出される最初の文字」・「抽出される最後の文字」・「抽出されるテキスト範囲」ステップの変更手順
「最初の文字」・「最後の文字」・「範囲」コマンドで記録した「抽出される最初の文字」・「抽出される最後の文字」・「抽出されるテキスト範囲」ステップを後から変更する場合、変更したい内容が抽出条件(開始位置・文字数)か、それ以外かで手順が異なります。
それぞれの手順を順番に解説していきましょう。
抽出条件(開始位置・文字数)
抽出条件(開始位置、文字数)のみを後から変更したい場合、以下の手順で変更しましょう。

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

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

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