縦に並んだリストを表にする方法|INDEXとSEQUENCEの使い方

縦に並んだリストを表にする方法|INDEXとSEQUENCEの使い方

「縦に長ーく続く名前のリスト、もっとコンパクトな表にまとめられないかな?」

データ管理をしていると、1列に並んだデータを、複数行・複数列の見やすいグリッド形式に並べ替えたい、という要望は頻繁に発生します。

従来、このような整形作業には複雑な数式が必要でした。しかし、Microsoft 365で導入された動的配列関数SEQUENCEを使えば、INDEX関数と組み合わせることで、この作業が一瞬で完了します。今回はこのスマートなテクニックを解説します。

目次

今回のゴール:縦1列の名簿を、2行4列の整列表に自動で変換する

以下の縦に並んだ「名簿」の氏名リストを、D2セルを起点とする2行4列の「整列表」に、たった一つの数式で変換することが目標です。

解決策:INDEX関数とSEQUENCE関数を組み合わせる

手順:D2 に INDEX と SEQUENCE の式を入れて Enter

縦 1 列に並んだ 8 人の名簿(B3:B10)を、2 行 4 列の表に並べ替えます。 D2 に次の式を入力して、Enter キーを押します❶。

D2 に入れる式
=INDEX(B3:B10,SEQUENCE(2,4))
B3:B10 配列(氏名の列)SEQUENCE(2,4) 行番号(1〜8 を 2 行 4 列に)
ひとことで縦 1 列の名簿を、1〜8 を 2 行 4 列に並べた番号の順に取り出して、2 行 4 列の表にする
式を分けて読むと(色は画像の枠と同じ)
配列B3:B10
どこから取り出す?
→ 氏名の列(8 人)
行番号SEQUENCE(2,4)
何番目を、どこに?
→ 1・2・3・4 / 5・6・7・8 の 2 行 4 列の番号
自分の表で使うときは
SEQUENCE(行,列)の「行 × 列」を、データの数に合わせます。8 人なら 2 行 4 列、4 行 2 列などです。例:A2:A13 の 12 件を 3 行 4 列に=INDEX(A2:A13,SEQUENCE(3,4))
  • Microsoft 365・Excel 2021 以降で使えます。結果が広がる先のセルに何か入っていると #SPILL! になります。
  • 行 × 列がデータの数より多いと、余った所は #REF! になります。
エクセルのINDEX関数とSEQUENCE関数で縦1列の名簿を2行4列の表にする式を色分けし、結果が広がる範囲を示した画面
エクセルのINDEX関数とSEQUENCE関数で縦1列の名簿を2行4列の表にする式を色分けし、結果が広がる範囲を示した画面

確認:1〜4 番目が 1 行目、5〜8 番目が 2 行目に並んだ

エクセルのINDEX関数とSEQUENCE関数で、名簿の1〜4番目が1行目に、5〜8番目が2行目に並んだことを色で示した画面
エクセルのINDEX関数とSEQUENCE関数で、名簿の1〜4番目が1行目に、5〜8番目が2行目に並んだことを色で示した画面

答えは 2 行 4 列の表 になりました❷。式は、次の順に計算しています。

  1. SEQUENCE(2,4)で、1〜8 の番号を 2 行 4 列に並べる
    ⇒ 1 2 3 4 / 5 6 7 8
  2. INDEX が、その番号の氏名を同じ位置に取り出す
    ⇒ D2:G3
ヒント:INDEX(B3:B10,{1,2,3,4;5,6,7,8}) と同じ
SEQUENCE の結果を、そのまま INDEX の行番号に渡しているのと同じ意味です。

まず動かしてみよう|この記事のサンプルをその場で試せます

練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。

サンプルデータ

以下は、上記画像のExcelデータですので、ダウンロードして練習として使用ください。

練習用Excelファイル(無料ダウンロード)
この記事の解説で使うExcelデータです。数式と練習データが入っているので、本文の式を同じ表で試せます。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

以下のサンプルデータをExcelシートにコピーして、操作の準備をしてください。

ABDEFG
1名簿整列表
2番号氏名(ここに数式を入力)
3231本堂 成重
4777福田 致虎
5613神保 明成
6729水木 春恒
7991笠間 直忠
8372小栗 蓮竜
9735石見 鎮連
10367山本 紀継

数式の解説(内側のSEQUENCEから理解する)

このテクニックの鍵を握っているのは、内側にあるSEQUENCE関数です。

ステップ1:SEQUENCE関数で「番号の設計図」を作成する

まず、SEQUENCE(2, 4)の部分が実行されます。

  • SEQUENCEは、連続した数値の配列(行列)を生成する関数です。
  • SEQUENCE(行数, 列数)のように引数を指定します。
  • SEQUENCE(2, 4)は、「2行4列の連続した番号の表を作って」という命令になります。

この結果、Excelの内部では目に見えない、以下のような数値の配列が生成されます。

1234
5678

この2×4の数値配列が、次にINDEX関数がどのデータをどこに配置するかの「設計図」の役割を果たします。

ステップ2:INDEX関数が「設計図」に従ってデータを配置する

次に、外側のINDEX関数が、SEQUENCEの作った設計図(数値配列)を使って動作します。

  • 数式全体は、=INDEX(B3:B10, {1,2,3,4; 5,6,7,8}) のように、SEQUENCEの結果をINDEXの2番目の引数(行番号)に渡したのと同じ意味になります。
  • INDEX関数は、「名簿リストB3:B10の中から、設計図の番号に対応するデータを取り出し、設計図と同じレイアウトで並べてください」という命令を実行します。
  • 具体的には、設計図の1番目の位置にはリストの1番目(本堂 成重)、2番目の位置にはリストの2番目(福田 致虎)…8番目の位置にはリストの8番目(山本 紀継)というように、データを配置していきます。

この結果、縦一列のデータが見事な2行4列の表に再配置され、スピル機能によってD2:G3の範囲に出力されるのです。

【実機で検証】人数が割り切れない・増えたときの動き

8 人を 3 行 3 列に並べる場合と、9 人目を足した場合を Excel の実機で試しました。WRAPROWS 関数とも比べています。

エクセルで縦のリストをINDEXとSEQUENCEやWRAPROWSで表にしたときの足りないセルと増えた行の結果の画面
エクセルで縦のリストをINDEXとSEQUENCEやWRAPROWSで表にしたときの足りないセルと増えた行の結果の画面
場面INDEX+SEQUENCEWRAPROWS
マスが余る(8 人を 3 行 3 列)余ったセルが #REF!余ったセルが #N/A
余ったセルを空にするIFERROR(式,””)WRAPROWS(A2:A9,3,””)
名簿に 9 人目を足す表示されないA2:.A100 と指定すれば表示される
名簿に空のセルがある0 と表示される0 と表示される。A1:A8&”” で空にできる
上から下へ並べる-WRAPCOLS(A2:A9,2)

WRAPROWS が使える Excel なら、式は短くなります。SEQUENCE(2,4) は 2 行 4 列に固定なので、人数が増えると行と列の数も直す必要があります。A2:.A100 の「:.」は、データのある範囲だけを使う指定です。試した Microsoft 365 では動きましたが、お使いの Excel で #NAME? やエラーになるときは、WRAPROWS(FILTER(A2:A100,A2:A100<>””),4,””) のように FILTER で空を除きます。

まとめ

INDEXとSEQUENCEの組み合わせは、単なるデータ抽出だけでなく、データの再配置や整形といった高度なタスクを、驚くほどシンプルな数式で実現してくれます。

レポートのレイアウトを整えたい時や、カレンダーを作成する際など、応用範囲は非常に広いです。Microsoft 365をお使いであれば、この動的配列を活かしたテクニックは絶対に覚えておくべき必須スキルと言えるでしょう。

動的配列・スピル系の関数の全体像は、こちらのまとめで整理しています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次