Excel活用

【パワークエリ】値の置換を増えた列にも対応させたい【質問箱】

今回はこんな質問をいただいたので、その解説を書いていこうと思います。

まず、今回の質問から。

テーブルのすべての列の値をaからbに置換をパワークエリで設定したところ、テーブルに列を追加したら追加した列の置換ができません。どのように対応すればよろしいでしょうか。

それに対する回答がこちら。

列名のリストを作成し、置換ステップでそのリストを参照すると列の追加に対応できます。

この詳細について書いていこうと思います。

列の追加に対応できない理由

改めて、今回起きた問題と原因を整理しておきましょう。

問題の所在

このように、パワークエリで左のテーブルから右のテーブルに変換したとします。ここでは19を190に置き換えました。

次に、左のテーブルに列を追加します。

そして更新しても・・・

このように、追加されたD列だけが置き換えできていません。

追加した列の置換ができない原因と対策

ではパワークエリでの置換ステップを確認してみましょう。

数式バーを見てください。

検索列のところ、{“A”,”B”,”C”} となっています。

ここに、”D” が含まれていないために置換が実行されないのです。

であれば、列を追加すればここに反映されれば、追加した列の置換もできますよね。

それをどうするか、です。

ここで、このTabele.ReplaceValue関数の解説を見てみましょう。

マイクロソフトの公式ページです。

https://docs.microsoft.com/ja-jp/powerquery-m/table-replacevalue

注目したいのは赤枠内。検索列の「リスト」となっています。

ということで、解決策は「列の追加に応じて更新されるリストを作成し、そのリストを置換ステップで参照する。」となるのです。

列の追加に対応して置換を実行する方法

列名リストの作成

まずパワークエリに対象のテーブルを取り込みます。

ここでステップ「変更された型」は削除しておきましょう。

このステップも列を参照して処理するため、列が変動する場合はエラーの原因となります。

次に、変換タブ「1行目をヘッダーと使用」の「ヘッダーを1行目として使用」を選択します。

ここでも型を変更するステップが作成されるので削除します。

次に同じく変換タブ「入れ替え」を選択します。

さらに列名の列を選択した状態で、変換タブ「リストに変換」を選びます。

これで、置換ステップで参照するリストの作成が完了です。

では次に置換ステップを見ていきましょう。

作った列名リストを参照して置換する方法

まず、適用したステップの最新ステップを選択した状態で右クリックし、「後にステップの挿入」を選択します。

ここで、ステップ「Column1」を参照しただけのステップが作成されるので、ここを「ソース」に書き換えます。

赤枠内を「ソース」に書き換えると・・・

このように、ステップ「ソース」のテーブルが表示されました。

次に置換処理を行います。

適当に列を選択した状態で変換タブ「値の置換」を選択し、置換内容を入力してOKボタンを押します。

すると置換が実行されるので、数式バーの列名参照個所(赤枠)を作成したリストに書き換えます。

ここでは「Column1」に書き換えます。

これで完成です。

実際に列の追加をして更新してみましょう。

このように、追加した列にも値の置換を実行することができるようになりました。

ちなみに、これは列名を変更した場合にも対応できます。

ただし、列名を変える場合注意点があります。

それはこちらの記事をご覧ください。

まとめ

列が増減する際の対応としては、列名を直接参照している関数に注意するとともに、参照列を列の増減に合わせて変動するようにする必要があります。

そして、リストを参照する場合、同クエリ内でリストを作って参照する方法も覚えておいて損はないと思います。

今回の各ステップの関連をまとめるとこんな感じです。

このように、クエリ内で参照するステップを変えることでできることの幅が広がるので、ぜひ覚えておいてほしいことの一つです。

最後まで読んでもらってありがとうございました!