10

これは簡単だと思い続けていますが、答えは私を回避しています。Excel Power Query で、列の各行の値を別の列の値に基づいて変換したいと考えています。たとえば、次のように Table1 があるとします。

Column A | Column B
-------------------
X        | 1
Y        | 2

新しい列を追加して元の列 A を置き換えることなく、列 B の値に基づいて列 A の値を変換したいと思います。 TransformColumns 関数内から行/レコードの他のフィールド値にアクセスしないでください。私はこのようなことができるようにしたいと思います:

=Table.TransformColumns(Table1, {"Column A", each if [Column B]=1 then "Z" else _ })

結果は次のようになります。

Column A | Column B
-------------------
Z        | 1
Y        | 2

これを行う方法があることは知っていますが、ステップ/変換の量が最も少ない方法を見つけようとしています。たとえば、Table.AddColumn を使用して、列 B を参照する関数に基づいて新しい列 A を追加できることはわかっていますが、元の列 A を削除して、複数の追加手順が必要な新しい列 A に置き換える必要があります。 .

4

6 に答える 6

17

これが私がこれをやった方法です:

Table1:
Column A | Column B
-------------------
X        | 1
Y        | 2

= Table.FromRecords(Table.TransformRows(Table1,
    (r) => Record.TransformFields(r,
        {"A", each if r[Column B]="1" then "Z" else _})))

結果:

Column A | Column B
-------------------
Z        | 1
Y        | 2

このように、Record.TransformFields 関数でネストされたリストを使用して、一度に複数の列を変換できます。

于 2015-07-22T11:32:17.923 に答える
6

別の代替手段は次のとおりです。

= Table.ReplaceValue(Table1, each [Column A], each if [Column B]=1 then "Z" else [Column A] , Replacer.ReplaceText, {"Column A"})

コードは少し読みやすくなっていますが、一度に 1 つの列にしか適用できません。

ここに示すように、そのほとんどは UI を使用して生成できます。 -and-powerquery-in-excel/

于 2017-07-23T06:07:38.507 に答える
0

このような手順で既存の列を変換することはできません。新しい列を使用し、変換を行ってから、既存の列を削除します。大したことは何ですか?Excel では、数式が別の列の値を変更することも期待できません。Power Query では、数式の結果も列に格納され、数式の入力値の 1 つを提供する列にすることはできません。

于 2015-07-21T21:37:35.587 に答える