2017-01-24 5 views
1

私は、Excelプロセスをパワークエリのカスタムカラムに変換しています。現在動作している方法は、上のセルを参照して現在のセルに書き込む方法です。上記のセルをパワークエリのカスタムカラムで参照する

Excelの式は= IF(G2 <> ""、(I2 <> IF ""、I2、 "")、H1)この例ではH2に入力されることになる 。基本的には、左に値のあるセルと私の右にあるセルがあるとき、右のセルの値を書きます。左のセルは、右に戻り、ヌルに戻ります。これは数千の行を流れ、小さな穴にパッチを当てるために数十回トリガーされることがあります。ヌル

  • を書く -

    1. 0 0 0: 最終結果は、基本的に次のようになり、中央の列は、(私は「」の代わりにゼロを使用したり、ビジュアルためにヌルよ)私の新しいデータです0 0 - 書くヌル
    2. X 1 - 右
    3. 0 1 0に値を書き込む -
    4. 0 1 0を超える値を書く - 上記の値を書く
    5. X 0 - 書くヌル
    6. 0 0 0 - 今、私は私の問合せの連鎖を実行する前に式を記述する必要がヌル

    を書く、私は、カスタム列に、このステップを組み込むしたいと思いますが、私は見つけることは至っていません溶液。私はmコードとパワークエリー、そしてスタックのオーバーフローには全く新しかったですが、これまではこれを除いて必要な各ステップを実行することができました。

  • 答えて

    4

    私の提案は異なるアプローチであろう:

    以下のクエリは、最初の2つのステップを作成し、列G、H、及びIと表1に基づいています。

    次の列Hが削除されます。

    GとIの両方がNULLの場合は、最初はIの値で新しい列Hが追加されます.Gがnullの場合は空白(後でnullになります)。

    次に、新しい列Hが塗りつぶされます。

    次の ""はnullに置き換えられます。

    最後に列の並べ替えが行われます。

    編集:すべての手順はUIで行います。

    let 
        Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], 
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"G", type text}, {"H", type any}, {"I", Int64.Type}}), 
        #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"H"}), 
        #"Added Custom" = Table.AddColumn(#"Removed Columns", "H", each if [G] <> null and [I] <> null then [I] else if [G] <> null then "" else null), 
        #"Filled Down" = Table.FillDown(#"Added Custom",{"H"}), 
        #"Replaced Value" = Table.ReplaceValue(#"Filled Down","",null,Replacer.ReplaceValue,{"H"}), 
        #"Reordered Columns" = Table.ReorderColumns(#"Replaced Value",{"G", "H", "I"}) 
    in 
        #"Reordered Columns" 
    
    +0

    それは美しく働いた!!!!私はそれを別のデータセットに適用する必要がありますが、その動きはエレガントで、これまでのところうまくいきます。 – CRSPLK

    0

    インデックス列を追加して、現在のインデックスから1を引いたセルにアクセスできます。たとえば、インデックス列Indexを追加し、その手順の名前をTableとした場合、前の行の列Column

    if [Index] > 0 then Table[Column]{[Index] - 1} else some_default_value

    some_default_valueあなたが最初の行のセルがなりたいものは何でも次のようになります。あなたは、カスタム式で、この式はでしょう。あなたの場合、これはおそらくnullでしょう。テーブルに行-1がないのでif文が必要です。

    +0

    『カスタム列を追加』を選択した後に新しい列の式は、(「各」なし)式のボックスに入力された私は、私の理解の欠如、および総初心者の状態に注意を引くことを憎むが、私は意志。私はMコード、そして一般的なコーディングには非常に新しいです。私は基本的にすべてUIを介して行っているので、インデックスの列とセル参照の面を傷つけていません。これがどのように動作し、ELI5の方法で適用できるのか私に説明できますか? – CRSPLK

    +1

    @Alejandro、imho @ MarcelBeugの方が優れています。 '{[Index] - 1}'はtry/catchやエラー置換のようなものを必要とするかもしれません。 UIのみを使用する初心者にとってはあまりに複雑すぎるように見えるかもしれない=) –

    +0

    彼の解決策はより良いです。 –

    関連する問題