
【エクセル パワークエリ】テーブル内全ての列を対象に値の置換を実行する方法 【Excel Power Query】
動画による解説

やりたいこと
パワークエリの「値の置換」で、テーブル内の全ての列を対象にして一括置換したい。

本文
EXCELのパワークエリには列を対象として値を置換する「値の置換」という機能があります。

ワークシート上の置換では、特に列や行といった特定の範囲を選択しなければ、アクティブなシート上の全てのセルを対象にして値が置換されます。
ところが、Power Queryエディター上に存在する「値の置換」機能は、
必ず特定の列を対象として置換を実行する仕様となっています。
下の画像は「2020/4/2」の列に存在する「null」を数値の「0」に置換した場合。


このテーブルの列は横に日付が展開されていて、「2020/4/1」~「2020/4/30」まであります。
さっき置換した「2020/4/2」列以外にも「null」データが存在するので、このテーブルに存在する「null」を全て「0」に置換したい場合はどうすればいいのでしょうか?

「テーブルの全列を選択してから値の置換を使えばいい」
というわけで、実際にやってみます。
全部の列を選択して。。。

値の置換で「null」を「0」にする。

やった!
全部の「null」が「0」に置換されました!終了!

とはなりません。
「値の置換」で作られた数式を数式バーで見てみます。

= Table.ReplaceValue(置き換えられた値,null,0,Replacer.ReplaceValue,{"列1", "2020/4/1", "2020/4/2", "2020/4/3", "2020/4/4", "2020/4/5", "2020/4/6", "2020/4/7", "2020/4/8", "2020/4/9", "2020/4/10", "2020/4/11", "2020/4/12", "2020/4/13", "2020/4/14", "2020/4/15", "2020/4/16", "2020/4/17", "2020/4/18", "2020/4/19", "2020/4/20", "2020/4/21", "2020/4/22", "2020/4/23", "2020/4/24", "2020/4/25", "2020/4/26", "2020/4/27", "2020/4/28", "2020/4/29", "2020/4/30"})
確かに、全ての列に対して確かに置換してはいますが、
その中身は「2020/4/1」~「2020/4/30」のそれぞれの列すべてを名指しで置換する、というものでした。
この先ずっと2020年4月の表しかこのクエリに取り込まないのであれば、これでも構いませんが、普通に考えれば来月は2020年5月の表を取り込みますし、再来月は2020年6月の表を取り込むはずです。
そんな時このクエリを実行しても、5月や6月の列なんか一切置換してくれません。
というか、もし2020年5月の表を取り込んで、このクエリを実行すると、パワークエリから「2020/4/1なんて列ない」といった内容のエラーが吐き出されて、クエリが停止します。
Power Query上でテーブルのすべての列を選択してからの値の置換は、実務上は全く使えない事がわかりました。
では、これを解決するにはどうすればよいのでしょうか?
実は、値の置換を実行するステップの数式バーを少し修正するだけで解決できます。

よければサポートしていただけると嬉しいです😀 有用な記事や動画を制作していけるように頑張ります❗️