Quantcast
Viewing all articles
Browse latest Browse all 60

Power Query:上と同じ値を非表示にする(グループ表示)

空いている行を上の値で埋めるのは「下方向にフィル」で簡単にできますが、その逆はどうでしょうか。もちろん「上方向にフィル」という意味ではなくてです。

Image may be NSFW.
Clik here to view.

つまり画像のように、先頭の値以外を表示しない設定です。「ピボットテーブルでやれ」、「クエリでやることか」といってしまえばその通りなんですが、頭の体操がてらどうやればいいか考えてみましょう。

エクセル感覚だと「上のセルと比較してー」と安易に考えがちですが、クエリでそれをやるのは非効率です。「0」開始と「1」開始のインデックス列を用意して、リストから参照したりマージしたりしてやればもちろんできますが、面倒ですし地味に重くなります。ここは一度、リスト化してから編集したほうがいいでしょう。

例によって左のテーブル(テーブル名は「テーブル1」)は既に読み込んであるものとします。

let
    ソース = テーブル1,
    リストに変換 = Table.ToColumns(ソース),
    グループ表示 = (l as list)=> [
        組み換え = List.Zip({l&{1/0}, {null}&l}),
        編集 = List.Transform(
            List.FirstN(組み換え, each _{0}<>1/0),
            each if _{0}=_{1} then null else _{0}
        )
    ][編集],
    リストの編集 = List.Transform(リストに変換, each グループ表示(_)),
    テーブルに変換 = Table.FromColumns(
        リストの編集, type table Type.TableRow(Value.Type(ソース))
    )
in
    テーブルに変換

こんな感じです。グループ化したくない列がある場合は、最初にリストを2つに分けておいて、後から結合してテーブルに変換すればいいですね。


Viewing all articles
Browse latest Browse all 60

Trending Articles