指定行数分だけ繰り返し表示をしたい場合。それも「1」「2」「3」「1」「2」「3」……ではなく「1」「1」「1」「2」「2」「2」……としたい時はどうするか。
これが1列しかない場合はそれほど難しくはない。例えば4行繰り返したい場合なら、
=TOCOL(A:A,SEQUENCE(COUNTA(A:A)),SEQUENCE(,4,,0)))
これでおしまい。範囲が固定なら、
=LET(r,A1:A5,TOCOL(IFERROR(EXPAND(r,,4),r)))
のようにしてもいい。これが2列以上ある場合は少し工夫が必要になる。
=WRAPROWS(TOCOL(INDEX(FILTER(A:B,A:A<>""),SEQUENCE(COUNTA(A:A)),2-MOD(SEQUENCE(,4*2),2))),2)
もしくは、REDUCE関数と HSTACK関数を組み合せる。
=WRAPROWS(TOCOL(DROP(REDUCE("",SEQUENCE(4),LAMBDA(x,y,HSTACK(x,FILTER(A:B,A:A<>"")))),,1)),2)
もしクエリでやりたい場合は、カスタム列に繰り返したい数だけリストを作って展開すればいい。
let
ソース = Excel.CurrentWorkbook(){[Name="データ範囲"]}[Content],
上位行の保持 = Table.FirstN(ソース, each [Column1]<>null),
リスト列の追加 = Table.AddColumn(上位行の保持, "リスト", each {1..4}, type list),
リスト列の展開 = Table.ExpandListColumn(リスト列の追加, "リスト"),
リスト列の削除 = Table.RemoveColumns(リスト列の展開,{"リスト"})
in
リスト列の削除
超簡単。