パワークエリを使って、表の中の複数の名称を置換する方法を紹介します。
置換するためには、List.Accumlate関数を使用します。
次の例では、「 取引先マスタ 」にある株式会社の略名を全て「 株式会社 」に置換します。
変換テーブルの作成
まずは、置換に必要な変換テーブルを作成します。
テーブル名は「 変換テーブル 」として、パワークエリエディタに取り込みます。
クエリの作成
新しいクエリで「 空のクエリ 」を作成します。
クエリに「 取引先マスタ 」と名前を付けて詳細エディタを開きます。
詳細エディタ内に以下の文を記入し、「 完了 」をクリックします。
let
ソース = Excel.CurrentWorkbook(){[Name="取引先マスタ"]}[Content],
追加されたカスタム = Table.AddColumn(ソース, "取引先名(変換後)",
each List.Accumulate(Table.ToRows(変換テーブル),[取引先名],
(accumulater, current)=>Text.Replace(accumulater,current{0},current{1})))
in
追加されたカスタム
エディターを確認すると、取引先名(変換後)という列が追加されて、全て「 株式会社 」に変換されました。
パフォーマンスの向上
List.Accumulate関数で置換表を作成して、そのデータ量が多い場合、処理速度がとても遅くなることがあります。
この問題を解決するためには、「 Table.Buffer 」関数を使用します。
先ほどの式に対して、次のように作り変えると、パフォーマンスが向上します。
letいつでもどこでも何度でも、スマホが教室に Udemy
テーブルBF = Table.Buffer(変換テーブル),
ソース = Excel.CurrentWorkbook(){[Name="取引先マスタ"]}[Content],
追加されたカスタム = Table.AddColumn(ソース, "取引先名(変換後)",
each List.Accumulate(Table.ToRows(テーブルBF),[取引先名],
(accumulater, current)=>Text.Replace(accumulater,current{0},current{1})))
in
追加されたカスタム
コメント