やりたいこと
縦に長いデータを1段当たりの行数を指定して段組みする
サンプル
A1:C12
のデータに対してE1セル
に関数を入力して5行ごとのデータに段組みする
セル関数
= LET(
行数, 5,
範囲, A1:C12,
列数, COLUMNS(範囲),
段数, ROUNDUP(ROWS(範囲)/行数,0),
拡張範囲, EXPAND(範囲,行数*段数,列数,""),
新範囲, WRAPCOLS(TOCOL(拡張範囲,,TRUE),行数),
列順, TOROW(SEQUENCE(列数,段数),,TRUE),
CHOOSECOLS(新範囲,列順)
)
数式の解説
項目 | 数式 | 説明 |
---|---|---|
行数 | 5 | 1段当たりの行数を指定 |
範囲 | A1:C12 | 段組み対象の元の範囲を指定 |
列数 | COLUMNS(範囲) | 1段あたりの列数を計算 |
段数 | ROUNDUP(ROWS(範囲)/行数,0) | 指定行数から段数を計算 |
拡張範囲 | EXPAND(範囲,行数*段数,列数,"") | 全体の行数が指定行数の倍数になるように空白行を追加 |
新範囲 | WRAPCOLS(TOCOL(拡張範囲,,TRUE),行数) | 全体を1列に変換した後、指定行数ごとの範囲に再変換 |
列順 | TOROW(SEQUENCE(列数,段数),,TRUE) | CHOOSECOLSに与える列の並び順の配列を作成 |
完成 | CHOOSECOLS(新範囲,列順) | 並び替えた列順で最終的な並びを完成 |
数式の補足説明
行数・範囲
こちらの値を、データに合わせてその都度変更してください
例では元の列は3列ですが、汎用的になっているので、何列でもその列数にあわせて段組みするようになっています
新範囲
列順
自分で言うのもなんですが、この発想はかなりイケてると思いませんか?
そう思ってくださる人がもしおられましたら、コメントやいいねお願いします