空いている行を上の値で埋めるのは「下方向にフィル」で簡単にできるけど、その逆はどうだろうか。もちろん「上方向にフィル」という意味ではなくて。
つまり先頭の値以外を表示しない。「ピボットテーブルでやれ」とか「クエリでやることか」とかいわれるとその通りなんだけど、ひとまずどうやればいいか考えてみた。
エクセル感覚だと「上のセルと比較してー」と安易に考えがちだが、クエリではそうもいかない。「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つに分けておいて、後から結合してテーブルに変換すればいいね。