見出し画像

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


動画による解説



やりたいこと

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

画像7


本文

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

画像1


ワークシート上の置換では、特に列や行といった特定の範囲を選択しなければ、アクティブなシート上の全てのセルを対象にして値が置換されます。

ところが、Power Queryエディター上に存在する「値の置換」機能は、
必ず特定の列を対象として置換を実行する仕様となっています。

下の画像は「2020/4/2」の列に存在する「null」を数値の「0」に置換した場合。

画像2


画像3


このテーブルの列は横に日付が展開されていて、「2020/4/1」~「2020/4/30」まであります。

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

画像7


「テーブルの全列を選択してから値の置換を使えばいい」

というわけで、実際にやってみます。


全部の列を選択して。。。

画像4

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

画像5

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

画像6


とはなりません。


「値の置換」で作られた数式を数式バーで見てみます。

画像8

= 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上でテーブルのすべての列を選択してからの値の置換は、実務上は全く使えない事がわかりました。


では、これを解決するにはどうすればよいのでしょうか?


実は、値の置換を実行するステップの数式バーを少し修正するだけで解決できます。


動画で学ぶExcelパワークエリ・パワーピボット


ここから先は

881字 / 3画像
この記事のみ ¥ 500

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