「データを横並びに整形したい」──そんな場面、ありませんか?
縦1列のリストを、一定の列数で横に並べ直すとき、手作業でコピペすると時間がかかります。
更新のたびに並べ直すのも、地味に手間ですよね。
ExcelのWRAPROWS関数を使えば、この作業を数式1つで自動化できます。
データが増えても更新不要で、常に最新の状態を保てますよ。
この記事では、WRAPROWS関数の構文・引数・使い方から、実務ユースケース・エラー対処まで解説します。
WRAPROWS関数とは?Excelでのバージョン確認
WRAPROWS関数は、1次元の配列を「行方向に折り返す」関数です。
縦1列や横1行のデータを、指定した列数ごとに折り返した2次元配列に変換できます。
読み方は「ラップロウズ」です。
“WRAP”(折り返す)と “ROWS”(行、複数形)を組み合わせた名前です。
たとえば、A列に12個のデータがあるとします。=WRAPROWS(A1:A12, 4) と入力すると、3行×4列の配列が自動生成されます。
元のリストを更新すると、出力も自動で再整形されますよ。
Microsoft 365 / Excel 2024以降のみ使用可能
WRAPROWS関数は、以下の環境でのみ動作します。
| 環境 | 対応 |
|---|---|
| Microsoft 365(Windows / Mac / Web) | ○ |
| Excel 2024(Windows / Mac) | ○ |
| Excel 2021 | × |
| Excel 2019 / 2016 | × |
スピル(数式の結果が複数セルに自動展開される機能)に対応した環境が必要です。
バージョンが古い場合は使えませんので、事前に確認してみてください。
Excel 2021以前では代替方法が必要
Excel 2021以前では、WRAPROWS関数は使えません。
INDEX関数やOFFSET関数の組み合わせで同様の処理は可能です。
ただし数式が複雑になるため、可能ならMicrosoft 365への移行を検討してみてください。
WRAPROWS関数の書き方(構文と引数)
基本構文
=WRAPROWS(vector, wrap_count, [pad_with])
引数は3つで、3つ目のみ省略できます。
引数の詳細
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| vector | 必須 | 折り返す元の1次元配列またはセル参照 |
| wrap_count | 必須 | 各行の最大列数(1以上の整数) |
| pad_with | 省略可 | 端数セルに入れる値。省略時は #N/A |
第1引数 vector(必須):折り返す元データ
vectorには、1次元の配列またはセル参照を指定します。
A1:A12のような縦1列でも、A1:L1のような横1行でも使えます。
注意点があります。
A1:C5のような複数行×複数列の2次元範囲を渡すと、#VALUE! エラーになります。
vectorは必ず1次元(1行または1列)で指定してください。
2次元データを渡したい場合はTOROW関数(2次元配列を横1行に変換する関数)と組み合わせます。
この活用法は後述の「TOROW関数との組み合わせ」で解説します。
第2引数 wrap_count(必須):各行の列数を指定
wrap_countには、各行に何列分のデータを並べるかを指定します。
たとえば wrap_count=4 なら、各行に4列分のデータが入ります。
12個のデータなら 12÷4=3 なので、3行×4列の配列になります。
0以下の値を指定すると #NUM! エラーになります。
必ず1以上の整数を指定してください。
第3引数 pad_with(省略可):端数セルの埋め方
データ件数がwrap_countで割り切れない場合、最終行に空きセルが生じます。
pad_withには、その空きセルに表示する値を指定できます。
- 省略した場合:空きセルに #N/A が表示される
""を指定した場合:空白セルになる0を指定した場合:0で埋まる
端数が出る場面では、pad_with="" を指定するのが見た目にきれいですよ。
基本的な使い方:1列データを複数行に折り返す
縦1列リストを3列配列に変換する例
A列に果物名が12個あるとします。
| A列 |
|---|
| りんご |
| みかん |
| ぶどう |
| もも |
| なし |
| いちご |
| すいか |
| メロン |
| バナナ |
| キウイ |
| マンゴー |
| パイナップル |
セルC1に次の数式を入力します。
=WRAPROWS(A1:A12, 4)
結果は次のような3行×4列の配列になります。
| 列1 | 列2 | 列3 | 列4 |
|---|---|---|---|
| りんご | みかん | ぶどう | もも |
| なし | いちご | すいか | メロン |
| バナナ | キウイ | マンゴー | パイナップル |
データが行の左から順に詰め込まれています。
12個がwrap_count=4で割り切れるため、端数は発生しません。
NOTE
WRAPCOLS関数との違いに注目してください。WRAPCOLS(A1:A12, 4) は4行×3列の「縦長」配列になりますが、WRAPROWS(A1:A12, 4) は3行×4列の「横長」配列になります。
端数が出る場合(pad_withの活用)
データが13個で、wrap_count=4の場合を見てみましょう。
=WRAPROWS(A1:A13, 4, "")
| 列1 | 列2 | 列3 | 列4 |
|---|---|---|---|
| 1番目 | 2番目 | 3番目 | 4番目 |
| 5番目 | 6番目 | 7番目 | 8番目 |
| 9番目 | 10番目 | 11番目 | 12番目 |
| 13番目 | (空白) | (空白) | (空白) |
13÷4は割り切れないため、4行目が1列分だけになります。pad_with="" を指定しているので、残り3セルが空白になります。
pad_withを省略した場合、空白の代わりに #N/A が表示されますよ。
表示をすっきりさせたい場合は、忘れずに "" を指定してみてください。
横1行データを折り返す場合
WRAPROWSはA1:L1のような横並びのデータにも使えます。
=WRAPROWS(A1:L1, 4)
横1行の12個のデータが、3行×4列の配列に変換されます。
縦リストを渡したときと結果の形状は同じです。
入力データの向きに関わらず、同じように使えるのが便利ですよ。
WRAPCOLS関数との違いと使い分け
折り返し方向の違い(行 vs 列)
WRAPROWSと対になる関数に、WRAPCOLS(ラップコルズ)があります。
構文はまったく同じです。
=WRAPCOLS(vector, wrap_count, [pad_with])
2つの違いは「折り返す方向」だけです。
- WRAPROWS:行方向(横)に折り返す → 横長の配列(少行・多列)
- WRAPCOLS:列方向(縦)に折り返す → 縦長の配列(多行・少列)
たとえば {a, b, c, d, e, f} の6要素を、wrap_count=3 で折り返すとします。
WRAPROWS(各行3列)の結果:
| 列1 | 列2 | 列3 |
|---|---|---|
| a | b | c |
| d | e | f |
WRAPCOLS(各列3行)の結果:
| 列1 | 列2 |
|---|---|
| a | d |
| b | e |
| c | f |
WRAPROWSは横長の配列、WRAPCOLSは縦長の配列になります。
どちらも「折り返す」ことに変わりはありませんが、方向が逆になります。
結果の形状と典型用途の比較表
| 項目 | WRAPROWS | WRAPCOLS |
|---|---|---|
| 折り返し方向 | 行方向(横に詰める) | 列方向(縦に詰める) |
| wrap_countの意味 | 各行の列数 | 各列の行数 |
| 結果の形状 | 横長配列(少行・多列) | 縦長配列(多行・少列) |
| 典型的な用途 | 横並び比較・カレンダー形式 | カタログ・グリッド整形 |
「横に並べたい」ならWRAPROWS、「縦に整形したい」ならWRAPCOLSと覚えておくと選びやすいですよ。
WRAPCOLSの使い方は ExcelのWRAPCOLS関数の使い方 で詳しく解説しています。
実務ユースケース3選
ユースケース①:商品リストを4列横並びに自動整形
販売管理システムからエクスポートした商品名が縦1列に並んでいます。
これを4列の横並び形式に整形してみましょう。
A列(A2:A12)に商品名が12個あるとします。
セルC1に次の数式を入力します。
=WRAPROWS(A2:A12, 4, "")
変換前(A列の縦リスト):
| A列 |
|---|
| 商品A |
| 商品B |
| … |
| 商品L |
変換後(3行×4列の配列):
| 列1 | 列2 | 列3 | 列4 |
|---|---|---|---|
| 商品A | 商品B | 商品C | 商品D |
| 商品E | 商品F | 商品G | 商品H |
| 商品I | 商品J | 商品K | 商品L |
商品が追加・削除されても、A列を更新するだけです。
横並び表の再整形は数式が自動でやってくれますよ。
ユースケース②:月次データを四半期単位(3列)に折り返す
12ヶ月分の月次売上データがD2:D13にあるとします。
これを4行×3列(四半期単位)に折り返すと、四半期ごとの比較がしやすくなります。
=WRAPROWS(D2:D13, 3)
| 1月 | 2月 | 3月 |
|---|---|---|
| 4月 | 5月 | 6月 |
| 7月 | 8月 | 9月 |
| 10月 | 11月 | 12月 |
各行が3ヶ月(四半期)分のデータになります。
SUM関数やAVERAGE関数を四半期ごとに適用するのも簡単になりますよ。
ユースケース③:SEQUENCE+WRAPROWSでカレンダー形式の連番グリッドを生成
SEQUENCE関数(連続した数値を生成する関数)と組み合わせると、カレンダー形式の番号表が1つの数式で作れます。
たとえば、1〜28の連番を7列(曜日列)×4行(週)のグリッドにするには:
=WRAPROWS(SEQUENCE(28), 7)
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
SEQUENCE(28) が {1, 2, …, 28} の連番を生成します。
WRAPROWSがそれを7列ずつの行に変換し、カレンダー形式のグリッドになります。
日付表の自動生成や座席番号の管理表にも活用できますよ。
SEQUENCE関数の詳細は ExcelのSEQUENCE関数の使い方 も参照してみてください。
TOROW関数と組み合わせた応用テクニック
2次元データを1次元化してWRAPROWSで再配置するレシピ
WRAPROWSのvectorには1次元配列しか渡せません。
しかし実務では、複数列のデータをまとめて再配置したいことがあります。
そこで活用するのがTOROW関数です。
TOROWは2次元配列を横1行に変換する関数です。
TOROWとWRAPROWSを組み合わせることで、柔軟な再配置が可能になります。
例:2列×4行のデータを再配置する
A1:B4に2列×4行(計8セル)のデータがあるとします。
=WRAPROWS(TOROW(A1:B4), 4)
処理の流れ:
① TOROW(A1:B4) → 2次元データを8要素の横1行に変換
② WRAPROWS(..., 4) → 2行×4列の配列に再配置
2次元データを一度1次元に「ならして」から、好きな列数で再配置できます。
「複数列のリストをまとめて横並べに整形したい」という場面で特に便利なテクニックです。
TOCOL/TOROW関数の詳細は以下の記事もあわせて参照してみてください。
- ExcelのTOCOL関数の使い方(2次元配列を縦1列に変換)
- ExcelのTOROW関数の使い方(2次元配列を横1行に変換)
エラーの原因と対処法まとめ
WRAPROWS関数で発生しうるエラーは4種類です。
| エラー | 主な原因 | 対処法 |
|---|---|---|
| #N/A | pad_withを省略していて端数セルがある | pad_with="" や pad_with=0 を指定する |
| #VALUE! | vectorに2次元配列を指定した | TOROWで1次元化してからWRAPROWSに渡す |
| #NUM! | wrap_countに0以下の値を指定した | 1以上の整数を指定する |
| #REF! | スピル先のセルに値が入っている | 出力先の範囲を空にしてから入力し直す |
#N/A エラー:端数が出る場合の対処
データ件数がwrap_countで割り切れないと、最終行の末尾に #N/A が出ます。
#N/A(エヌエー)は “Not Available”(利用不可)の略で、値がないことを示します。
=WRAPROWS(A1:A10, 3) ' 10÷3=3余り1 → 最終行の末尾2セルに#N/A
空白にしたい場合:
=WRAPROWS(A1:A10, 3, "")
0で埋めたい場合:
=WRAPROWS(A1:A10, 3, 0)
端数が出る可能性があるときは、最初からpad_withを指定しておくと安心ですよ。
#VALUE! エラー:2次元配列を渡した場合
vectorに2次元範囲(複数行×複数列)を渡すと #VALUE! になります。
' NG: 2次元配列を直接渡す
=WRAPROWS(A1:C5, 4) ' → #VALUE!
' OK: TOROWで1次元化してから渡す
=WRAPROWS(TOROW(A1:C5), 4)
vectorに渡しているセル範囲が2次元になっていないか確認してみてください。
#NUM! エラー:wrap_countの値が不正
wrap_countに0以下の値を指定すると #NUM! になります。
=WRAPROWS(A1:A12, 0) ' → #NUM!
=WRAPROWS(A1:A12, -1) ' → #NUM!
1以上の整数を指定してください。
セル参照でwrap_countを指定している場合は、そのセルの値を確認してみてください。
#REF! エラー:スピル先に値が入っている
WRAPROWS関数はスピルを使って結果を複数セルに展開します。
出力先の範囲に他のデータが入っていると、#REF! エラーになります。
出力先となるセル範囲を空にしてから、数式を入力し直してください。
スピルに必要な範囲が広い場合は、周囲のデータを別の場所に移動してみてください。
まとめ:WRAPROWS関数でリスト整形を自動化しよう
この記事の要点を整理します。
| ポイント | 内容 |
|---|---|
| できること | 1次元リストを行方向に折り返して2次元配列に変換 |
| 構文 | =WRAPROWS(vector, wrap_count, [pad_with]) |
| 対応環境 | Microsoft 365 / Excel 2024以降のみ |
| WRAPCOLSとの違い | 横長配列(WRAPROWS)vs 縦長配列(WRAPCOLS) |
| 主なエラー | #N/A / #VALUE! / #NUM! / #REF! |
WRAPROWS関数を使えば、手作業で並べ替えていたリストが数式1つで自動化できます。
データが増えても更新不要なので、メンテナンスの手間もなくなりますよ。
ぜひ実務で試してみてください。
関連関数
配列操作の関連記事もあわせてどうぞ。
- ExcelのWRAPCOLS関数の使い方(列方向に折り返す対の関数)
- ExcelのTOCOL関数の使い方(2次元配列を縦1列に変換)
- ExcelのTOROW関数の使い方(2次元配列を横1行に変換)
- ExcelのSEQUENCE関数の使い方(連番を自動生成)
- ExcelのHSTACK関数の使い方(配列を横方向に結合)
- ExcelのVSTACK関数の使い方(配列を縦方向に結合)
- ExcelのCHOOSECOLS関数の使い方(指定列を抽出)
- ExcelのCHOOSEROWS関数の使い方(指定行を抽出)
- ExcelのTAKE関数の使い方(先頭・末尾を抽出)
