Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11 Pro : Microsoft 365)
PowerQuery 複数列の値を他の列の値で置換する
投稿日時: 23/03/07 11:45:10
投稿者: tarima

nullを"値なし"にのように複数列を同じ"値"で置換するのはできます。
複数列を別の複数列の値で置換するにはどのように書けばよいのか教えてください。
 
以下のように書いたり試行錯誤したのですが、わかりません。
NG
エラー
// nullを他の列の値で置換したい
    なし= Table.ReplaceValue(
        展開,
        null, {"m列1", "m列2", "m列3", "m列4"},
        Replacer.ReplaceValue,
        {"列1", "列2", "列3","列4"}
    ),
 
 
OK
// nullを"値なし"に
    なし= Table.ReplaceValue(
        展開,
        null, "値なし",
        Replacer.ReplaceValue,
        {"列1", "列2", "列3","列4"}
    ),

回答
投稿日時: 23/03/07 13:56:34
投稿者: Suzu

【なんでもエクセル(Nandemo Excel)】
Power Query:置換リストを使って文字列の一括置き換え
https://nandemo-xl.hatenablog.com/entry/2022/11/14/162951
 
こういう事でしょうか?

投稿日時: 23/03/07 15:08:24
投稿者: tarima

いいえ、リストは作成しません。
 
Table.ReplaceValue関数の書き方の質問です。
 
{"列1", "列2", "列3","列4"}の値がnullの行はそれぞれ{"m列1", "m列2", "m列3", "m列4"}の値で置換したいという希望です。
 
 

Suzu さんの引用:
【なんでもエクセル(Nandemo Excel)】
Power Query:置換リストを使って文字列の一括置き換え
https://nandemo-xl.hatenablog.com/entry/2022/11/14/162951
 
こういう事でしょうか?

回答
投稿日時: 23/03/07 17:58:35
投稿者: んなっと

なし = Table.FromRecords(
    Table.TransformRows(展開, (r)=>
     Record.TransformFields(r,{
      {"列1", each if r[列1] =null then r[m列1] else r[列1]},
      {"列2", each if r[列2] =null then r[m列2] else r[列2]},
      {"列3", each if r[列3] =null then r[m列3] else r[列3]},
      {"列4", each if r[列4] =null then r[m列4] else r[列4]}
                  })))

回答
投稿日時: 23/03/07 17:58:41
投稿者: gombohori

    置き換えられた値 = Table.ReplaceValue(展開,null, each [m列1],Replacer.ReplaceValue,{"列1"}),
    置き換えられた値1 = Table.ReplaceValue(置き換えられた値,null,each [m列2],Replacer.ReplaceValue,{"列2"}),
    置き換えられた値2 = Table.ReplaceValue(置き換えられた値1,null,each [m列3],Replacer.ReplaceValue,{"列3"}),
    置き換えられた値3 = Table.ReplaceValue(置き換えられた値2,null,each [m列4],Replacer.ReplaceValue,{"列4"})
では

投稿日時: 23/03/07 21:36:52
投稿者: tarima

んなっと様、gombohori様、
教えてくださりありがとうございます。とても助かります。
 
 Table.FromRecords,Table.TransformRows,Record.TransformFieldsのあわせ技は、現時点では理解できませんが、今後使いこなせるように学習します。