Excel PowerQuery 「例からの列」機能など

Microsoft Excel

スポンサーリンク

Excel PowerQuery 1列内の情報が混在している表を整形する

前回の記事で、1列の中に色々と情報が混在している表を整形する処理を扱った。

その最後で、「部」「課」列が最初と最後に記号で挟まれていて、それを削除する前の段階で終わった。

今回はその続きを書いていく。

列の加工を簡便的に実施するコマンド「例からの列」

前回は、Excel表のデータが、上図のようになったところまで述べた。

上図で「部」は< > 記号で、「課」は [ ] 記号で囲まれており、これら記号を削除していく。

その削除をどうすれば良いか、適したコマンドが分からないとしよう。実際、私もちょっと分からなかった。

そういう風に、列を加工するようなコマンドが分からない場合は、「例からの列」コマンドを使う。

ではまず「部」列を加工する。「部」列を選択した状態で

リボン「列の追加」タブ
→「例からの列
→「選択範囲から

としよう。

選択範囲から」にしないと、たくさん列がある場合もそれら全ての列を対象にするとか、大変なことになる。

右端の「列1」という箇所に、サンプル値を入力することができる。

今回は、1行目の
部001
値に対しては、< > 記号を削除して
部001
としたいわけなので、その「部001」を入力してEnterキーを押す。

すると、2行目移行にも < > 記号を除いた値が正しく埋まってくれる。ついでに「区切り記号の前のテキスト」とかいう見出しが付けられた。

そのまま上の「OK」ボタンを押せば、この加工をしたものが新しい列として追加されてくれる。

要はこの「例からの列」機能は、列の加工後にどういう値にしたいのかをサンプル値として入力したのを元に、どういう変換を推測・実行してくれるというものだ。

その推測が一向に正しくなされないことも多いので、過信はできないが、列の加工について具体的なコマンドが分からない場合に使える。

処理内容の確認

では今、「例からの列」処理では、具体的にPowerQueryの何の機能が使われたのか?

右端の「クエリの設定」画面で最下端に「区切り記号の間に挿入されたテキスト」というやつが追加されているが、これの右端の歯車アイコンをクリックしよう。

すると、下図のような画面が出てくる。

「区切り記号の間のテキスト」という機能を使って、最初と最後の < > 記号を指定して、区切り記号の間の部分の文字だけを残したということのようだ。

「区切り記号の間のテキスト」機能による処理

次の [ ] 記号で囲まれた「課」列も「例からの列」機能で処理しても間違いではないが、いま推測を付けた「区切り記号の間のテキスト」機能でやってみよう。

リボン「変換」タブ
→「抽出」
→「区切り記号の間のテキスト」

とする。

「課」列は最初と最後の [ ] 記号を削除したいので、それらを指定して「OK」とする。

すると下図のように、「課」列から[ ] 記号が削除された状態になる。

なお、先ほど「部」列について「例からの列」機能でやったときの「区切り記号の間のテキスト」は、実はリボン「列の追加」タブから実行される機能だ。だから元の「部」列も削除されず残っている。

そして今回やった「区切り記号の間のテキスト」は、リボン「変換」タブからやったもので、だから「課」列が上書きされる形で[ ] 記号が削除されている。

同様の機能であっても、このようにリボンの「変換」タブからやるか「列の追加」タブからやるかで、元の列が削除されるかどうかが違ってくるので注意。

フラッシュフィル

完全にPowerQueryとは無関係の話になるけど、今回使った「例からの列」機能、Excelの通常機能で類似のものとして「フラッシュフィル」がある。

下図のExcel表で、A列の値から< >記号を除いたものをB列に埋めたいとする。
それをまともにExcelの関数だけでやろうとすると、ちょっと面倒だ。

だがこの場合は、B1セルに最初のサンプル値「部001」を入力してから、ショートカットキー Ctrl + E を実行すれば、B列すべてに正しい値が埋められる。

PowerQueryの「例からの列」と同様に、サンプル値に基づいて推測してくれるわけだ。

このフラッシュフィルも、推測が正しく働いてくれないことが多くて、私はあまり使わないけどね。

ちなみに上図のようなケースは、私なら関数もフラッシュフィルも使わず、テキストエディタのサクラエディタで処理する。

スポンサーリンク