なんでもエクセル(Nandemo Excel)

何でもエクセルでやってしまう そこのあなた。ようこそ

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

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

つまり先頭の値以外を表示しない。「ピボットテーブルでやれ」とか「クエリでやることか」とかいわれるとその通りなんだけど、ひとまずどうやればいいか考えてみた。

エクセル感覚だと「上のセルと比較してー」と安易に考えがちだが、クエリではそうもいかない。「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つに分けておいて、後から結合してテーブルに変換すればいいね。