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

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

数式/関数/Power Query:指定行数分だけ繰り返し表示させる

指定行数分だけ繰り返し表示をしたい場合。それも「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
    リスト列の削除

超簡単。