PowerQuery 文字列の置換|完全一致・部分一致・複数条件

PowerQuery(パワークエリ)で文字列を置換する方法ついて紹介します。完全一致や部分一致での置換方法や置換リストを使用した複数条件の置換方法も合わせて解説しています。

文字列の置換方法

部分一致の置換

文字列の置換を部分一致で行うには、変換タブにある「値の置換」を使用します。

ここでいう、部分一致とは「指定の文字列 が セル内の文字列に部分的に含まれている」という意味です。

手順は以下の通りです。

STEP
置換を行う列を選択する

文字列を置換したい列をクリックして選択する。

置換する列のデータ型は「テキスト」か「すべて」にしてください。

STEP
文字列を置換する

変換タブにある「値の置換」を選択して、設定画面の「検索する値」と「置換後」を入力してOKをクリックする。

STEP
部分一致の文字置換の完了

以上で文字の置換の完了です。部分一致での置換ですので文字列に含まれている全ての「A」が「あ」に置き換わってます。

完全一致の置換

文字列の置換を完全一致で行うには、「値の置換」の詳細設定オプションにある「セルの内容全体を照合」にオンにします。

ここでいう、完全一致とは「指定の文字列 と セル内の文字列 が全く同じ」という意味です。

手順は以下の通りです。

STEP
置換を行う列を選択する

文字列を置換したい列をクリックして選択する。

置換する列のデータ型は「テキスト」か「すべて」にしてください。

STEP
セルの内容全体を照合して文字列を置換する

変換タブにある「値の置換」をクリックして、設定画面の「セルの内容全体の照合」にチェックを入れる。

そのあと、置換する文字を設定してOKをクリックする。

STEP
完全一致の文字置換の完了

以上で文字の置換の完了です。完全一致での置換なので、セル内の文字列が「A」のみのデータが「あ」に置き換わってます。

nullの置換

次によく使う具体例としてnullの置換方法を紹介します。

手順説明のための例として、下記データの列1のnullを空白に、列2のnullを0に置換します。

STEP
nullを空白に置換する
  1. nullを置換したい列「列1」をクリックして選択する。
  2. ホームタブの「値の置換」をクリックする。
  3. 「検索する値」に「null」を入力し、「置換後」は入力せずにOKをクリックする。
STEP
nullを0に置換する
  1. nullを置換したい列「列2」をクリックして選択する。
  2. ホームタブの「値の置換」をクリックする。
  3. 「検索する値」に「null」、「置換後」に0を入力してOKをクリックする。
STEP
null置換完了

以上でnullの置換は完了です。列1のnullは空白になり、列2のnullは0に置換されています。

Sponsored link

複数列の置換方法

複数列において文字列の置換を行う場合は、列ヘッダーをCtrlキーを押しながらクリックして複数選択した後に「値の置換」をすればOKです。

手順は以下の通りです。

STEP
置換を行う列を複数選択する

文字列を置換したい複数の列をCtrlキーを押しながらクリックして複数選択する。

STEP
文字列を置換する

変換タブにある「値の置換」を選択して、設定画面の「検索する値」と「置換後」を入力してOKをクリックする。

STEP
複数列の文字置換の完了

以上で複数列の文字の置換の完了です。列1と列2ともに文字が置換されています。

Sponsored link

if文による複数文字列の置換

次にif関数を用いて複数の文字列を置換する方法を紹介します。

部分一致の置換

列の文字列データの一部分だけを置換する式は下記のように記述します。

式の内容としては対象の列のそれぞれの行データに置換したい文字列が含まれているかチェックして、含まれている場合はその文字列を別の文字列に置換するといったものです。

if Text.Contains([列名],"置換前の文字列1") then Text.Replace([列名],"置換前の文字列1","置換後の文字列1")
else if Text.Contains([列名],"置換前の文字列2") then Text.Replace([列名],"置換前の文字列2","置換後の文字列2")
else if Text.Contains([列名],"置換前の文字列3") then Text.Replace([列名],"置換前の文字列3","置換後の文字列3")
else [列名]

複数文字列に対応できるように記載してありますが、if elseの行を削除すればひとつの文字列の置換も可能です。また、else ifの行を増やすことで置換する文字列を増やすことも可能です。

完全一致の置換

列の文字列データと完全一致した場合に文字列を置換する式は下記の通りです。

if [列名] = "置換前の文字列1" then "置換後の文字列1"
else if [列名] = "置換前の文字列2" then "置換後の文字列2"
else if [列名] = "置換前の文字列3" then "置換後の文字列3"
else if [列名] = "置換前の文字列4" then "置換後の文字列4"
else if [列名] = "置換前の文字列5" then "置換後の文字列5"
else [列名]

複数文字列に対応できるように記載してありますが、if elseの行を削除すればひとつの文字列の置換も可能です。また、else ifの行を増やすことで置換する文字列を増やすことも可能です。

より詳しい内容はこちらの記事を紹介してますので参考に見てみてください。

Sponsored link

置換リストによる複数文字列の置換

次に置換リストを用いて複数の文字列を置換する方法を紹介します。

概要手順は下記の通りです。

  1. 置換用のテーブルを作成する
  2. テーブルから置換リスト(リスト型データ)を作成する。
  3. カスタム列を用いて下記の複数文字列の置換式を入力する。
  4. 置換前の列データを削除する。
複数条件の置換の式

文字列の置換を部分一致で行うか、完全一致で行うかで使用する式が違います。式内のテーブル名・列名・インデックス列名・置換リストは状況に応じて設定する値です。

・部分一致

Text.Combine(List.ReplaceMatchingItems(Text.ToList(テーブル名[列名]{[インデックス列名]}),置換リスト)))

・完全一致

List.ReplaceMatchingItems(テーブル名[列名],置換リスト){[インデックス列名]})

より詳しい内容はこちらの記事を紹介してますので参考に見てみてください。

Sponsored link

追加列への置換適用

テーブル全体やすべての列で文字列置換を設定した場合に あとで新規追加される列にも事前に設定した文字置換設定を適用させたい場合があると思います。

その方法を紹介します。

追加列には置換が適用されない

通常設定だと文字列置換は事前に設定した列のみしか適用されません。具体例としてはこのような状況です。

問題の具体例

列1,列2のnullを0に置き換える設定をする。

そのあとに元データに列3が追加されても置換後のテーブルの列3には置換が適用されません。

置換が適用されない理由

置換設定が新たに追加した列に適用されない理由は「置換を行う列を列名で指定している」ためです。

下図の置換を行っているステップの数式バーには列名指定が{”列1”,”列2”}となっています。そのため、新たに追加された列(下図では列3)では置換が行われません。

追加列に置換を適用させる方法

文字置換が新たな追加列に適用されないのは 置換を行う列名に新しい列の列名がないことが原因でした。

そのため、解決策は「置換を行うテーブル列名を個別に指定するのではなく、テーブル列名を取得して利用する」とすればOKです。

このテーブル名を取得するといった部分にTable.ColumnNamesという関数を用います。

Table.ColumnNames関数とは?

テーブルの列名取得にはTable.ColumnNames関数が利用できます。テーブル名の部分に列名を取得したいテーブル名を入力すれば、そのテーブルのすべての列名を取得できます。

Table.ColumnNames(テーブル名)

追加列への置換設定方法

設定方法の例として、下図の設定を追加列にも置換が設定されるように変更します。

設定方法は簡単で数式バー内の {”列1”,”列2”}をTable.ColumnNames関数に置き換えることでOKです。

Table.ColumnNames関数には参照するテーブルが必要です。ここではテーブルには置換を行う前のテーブル「変更された型」を利用します。※参照テーブル名はそれぞれの状況に応じて変更してください。

数式バーの{”列1”,”列2”}Table.ColumnNames(変更された型) に変更します。

以上で、設定変更は完了です。

新たに追加された列3にも置換設定が反映されていることがわかります。このあと、元データに列4,列5と追加されたとしても すべての列に置換設定は適用されます。

Table.ColumnNamesで参照するテーブル名がわからない場合は
「置き換えられた値」ステップのひとつ上にあるステップ名(テーブル名)を設定すればOKです。

Sponsored link

Power Queryのおすすめ書籍

パワークエリの学習本についてはコチラの記事でまとめてますので参考にしてみてください。

初心者向けおすすめ学習本

初中級者向けおすすめ学習本

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA