大変お世話になってる狸(@tanuki_phoenix )さんのこの置換記事の中身を
初心者向けに使い方を解説する内容になります
#使いたいコード
= List.Accumulate(
Table.ToRows(t_指示テーブル), //リストの各項目を用いた繰り返し処理。
サンプルテキスト, //初項。最初のxはこれになる。
(x,y)=>Text.Replace(x,y{0},y{1}) //{0},{1}はリストの項目の取り出し方の記法。
)
これをコード関連の知識なしで流用するのは難しいと思うので簡単に使っていく方法を説明します
##今回の変換対象
ありがちな、区切り全角(黄色)、入力がカタカナ(緑)、旧漢字を使用(オレンジ)みたいな
この辺りを置換を使って処理する流れをシンプルにお届けします
##置換に使う変換テーブル
置換前に置換するためのテーブルをこのように作っておきます
・次の処理でこのテーブルの左から~番目の列という指定法になるため、列名は置換に影響を与えないので__好きに付けて良い__です
・2列を前提としてないので__C列に備考列を作っても動作__します
これをテーブルからで、「名前置換テーブル」という名前で取り込んでおきます
注) 図中のy{0}とy{1}はあとで出てくる指定している列位置です
ここで重要なのは置換テーブル側に__データの入れてない列(nullが入る所)があるとエラーが出る__ので、
・元のテーブルで入れないように管理する
・この取り込みのクエリ内でフィルタなどの削除処理をする
等で消しておきましょう
##変換対象を読み込んだあとの処理
カスタム列を選択し、下記内容をコピペしてそのまま処理します
List.Accumulate(Table.ToRows(名前置換テーブル),[名前],(x,y)=>Text.Replace(x,y{0},y{1}))
ここでは「社員名簿」というクエリ内で、
「名前置換テーブル」の結果を呼び出し、その中のデータを使って
[名前]列の各行を置換する処理をしています
「クエリのマージ」や「クエリの追加」で別のクエリのデータを使用しているのと同じ処理になります
#変換結果
見やすいように変換後の位置を変えて出力した物がこちらになります
目的の行の置換に成功していることが分かります
ここまでできたら
あとは変換テーブルを問題があったときに増やしていけば
コード側をいじらず処理していくことができます
今回の変換テーブルはブック内に置いておく必要は無いので
別ファイルで管理して取り込むなど、
使い方の幅も広いのでいろいろ使ってみてください
##備考
スペースだと見えにくいのでアスタリスクで表示しますが
「**」「*」「*」「」という感じに全角半角+複数が混じっている場合は
上から順に処理されていくのを使って5行で全角→半角を行った後、6行目で
個数の調整をすれば「*」に統一することができます