Quantcast
Channel: なんでもエクセル(Nandemo Excel)
Viewing all articles
Browse latest Browse all 48

Power Query:特定の文字が含まれる値を置換する

$
0
0

パワークエリでの文字列の変換には、「値の置換(Table.ReplaceValue)」を使いますよね。「A」を「B」に置き換えするような場面なら、これでできます。

ただパワークエリでは、今のところワイルドカード正規表現が使えません。「A BCD」や「BCDA」のように、置換したい文字列の前後に何かしらの文字列がくっついていると、それを一括で特定の文字列に変換するのは一筋縄ではいきません。素直にやるなら Table.TransformColumnsで ifを使って変換するくらいでしょうか。

なんとか「~から始まる/~で終わる/~を含む」を条件にして「置換」できないものかと思って、ヘルプで「Table.ReplaceValue」を検索してみたところ、ヒントが見つかりました。この関数、第4引数に第1~第3引数を変数にした式を入れ込めるんですね。

learn.microsoft.com

「~を含む」を条件にするなら、下記のようにすればいいです。

「を含む」値の置き換え
= Table.ReplaceValue(     ソース,     each Text.Contains([列1], "A"),     "B",     (a,b,c)=> if b then c else a,     {"列1"} )

「で始まる」「で終わる」を指定する場合は、関数を変えるだけです。

「で始まる」値の置き換え
= Table.ReplaceValue(     ソース,     each Text.StartsWith([列1], "A"),     "B",     (a,b,c)=> if b then c else a,     {"列1"} )
「で終わる」値の置き換え
= Table.ReplaceValue(     ソース,     each Text.EndsWith([列1], "A"),     "B",     (a,b,c)=> if b then c else a,     {"列1"} )

結局、Table.TransformColumnsとそんなに変わらんような……

もっとうまいやり方があるのかもしれませんが、ひとまず。


Viewing all articles
Browse latest Browse all 48

Trending Articles