縦1列に並んだ商品リストを「4列ずつ折り返して一覧表にしたい」と思ったこと、ありませんか。手作業でコピペしていると、項目数が変わるたびに並べ直しが発生して地味に時間を奪われます。
そんなときに便利なのが、Googleスプレッドシートの WRAPROWS関数 です。縦1列のデータを指定した列数で自動的に行方向へ折り返す関数で、2023年2月から全アカウントで使えるようになりました。
この記事では、WRAPROWSの基本構文から、pad_with 引数の使い分け、姉妹関数 WRAPCOLS との違い、TOROWと組み合わせた実務テクまで解説します。
WRAPROWS関数とは?スプレッドシートでの使いどころ
WRAPROWS関数は、1次元の配列(縦1列または横1行のデータ)を、指定した列数ごとに区切って2次元の表に折り返す関数です。名前の通り、「行(rows)を折り返す(wrap)」動きをします。
WRAPROWS関数が役立つ場面
具体的には、こんな場面で役立ちます。
- アンケート回答の縦リストを4列×N行の表示用レイアウトに並べ直したい
- 商品コードを縦に並べたデータから印刷用に横並びの台紙を作りたい
- 日付の連続データをカレンダー風に7列へ折り返したい
- TOCOLで抽出した1列データを複数列の見やすい形に戻したい
従来はINDEX+ROW+COLUMNを組み合わせた長い数式か、手作業のコピペで対応していた領域です。WRAPROWSなら一発で済みます。
Googleスプレッドシート固有の仕様とExcelとの違い
WRAPROWSはExcelにも存在しますが、利用可能な環境が違います。
| 環境 | 対応状況 |
|---|---|
| Googleスプレッドシート | 2023年2月〜全アカウントで利用可 |
| Microsoft 365(Excel) | 利用可(Windows/Mac/Web) |
| Excel 2024 | 利用可 |
| Excel 2021以前 | 非対応 |
引数名(vector / wrap_count / pad_with)は両者で完全に一致しており、数式のコピペ互換性は高めです。Excel版の詳細はExcelのWRAPROWS関数の使い方で解説しています。
WRAPROWS関数の基本構文と3つの引数
構文はシンプルに、引数3つだけです。
=WRAPROWS(vector, wrap_count, [pad_with])
第1引数:vector(対象範囲)
折り返したい1次元の配列を指定します。縦1列の範囲(A1:A12)でも、横1行の範囲(A1:L1)でもOKです。
A1:D3 のような2次元範囲を直接渡すと #VALUE! エラーになります。この回避法は後半で解説します。
第2引数:wrap_count(折り返し列数)
1行あたりに入れる要素数です。4 を指定すれば、4要素ごとに次の行へ折り返します。
非整数(例: 3.7)を指定すると小数点以下は切り捨てられ、3 として扱われます。0 や負の数を指定すると #NUM! エラーになるので注意してください。
第3引数:pad_with(代替文字)
折り返したときに最終行で発生する空きセルを埋める値を指定します。省略可能で、省略時は #N/A が入ります。選択が実務に直結するため、専用セクションで詳しく扱います。
基本的な使い方:縦1列データを横方向に折り返す
シンプルな折り返し例
A1:A12 に12個の項目(商品1〜商品12)が縦に入っているとします。4列ずつ横に並べ直すなら、次のように書きます。
=WRAPROWS(A1:A12, 4)
結果は4列×3行の表としてスピルします。12項目が4で割り切れるので、端数は発生せず #N/A も出ません。
SEQUENCE関数で連番を生成して試すこともできます。
=WRAPROWS(SEQUENCE(12), 4)
これで1〜12の数字が4列3行に並びます。SEQUENCEは縦1列を返すので、そのままWRAPROWSに渡せます。
折り返し列数を変えた場合の出力比較
同じ12項目でも、wrap_count を変えると出力形状が変わります。
| wrap_count | 出力形状 | 備考 |
|---|---|---|
| 2 | 2列×6行 | 縦長になる |
| 3 | 3列×4行 | 割り切れるので端数なし |
| 4 | 4列×3行 | 割り切れるので端数なし |
| 5 | 5列×3行 | 最終行に3つ空きが出る |
| 12以上 | 1行×12列 | 折り返しなし(全要素が1行に並ぶ) |
wrap_count が要素数以上のときは折り返しが発生せず、横1行の配列がそのまま返ります。
第3引数(pad_with)の使い方:端数セルを制御する
WRAPROWSを実務で使うと、ほぼ必ず端数が出ます。その空きセルをどう埋めるかが pad_with の役割です。
省略時の挙動(#N/Aが入る理由)
13項目を4列で折り返すと、4×4=16セル中、最後の3セルが余ります。pad_with を省略すると、この3セルには #N/A が入ります。
=WRAPROWS(A1:A13, 4)
表示だけなら問題ありませんが、後続で SUM や COUNTIF を当てるとエラーが伝播します。ここで pad_with の出番です。
空文字・0・任意文字列を指定した場合の比較
実用的な4パターンを整理します。
| 指定値 | 数式例 | 空きセルの見え方 | 使いどころ |
|---|---|---|---|
| 省略 | =WRAPROWS(A1:A13, 4) | #N/A | デバッグ時に端数を目視したい場合 |
""(空文字) | =WRAPROWS(A1:A13, 4, "") | 空白 | 見た目重視・印刷用レイアウト |
0 | =WRAPROWS(A1:A13, 4, 0) | 0 | SUM・SUMIFなど数値集計と組み合わせるとき |
| 任意文字列 | =WRAPROWS(A1:A13, 4, "-") | - | 「該当なし」を明示したい帳票 |
集計関数と組み合わせるときの推奨設定
WRAPROWSの結果に対して SUM や AVERAGE を使う場合、pad_with には 0 を指定するのが鉄則です。
=SUM(WRAPROWS(A1:A13, 4, 0))
省略時の #N/A のまま集計しようとすると、#N/A が伝播して結果全体がエラーになります。空文字 "" も数値計算では型不一致で思わぬ挙動を招くことがあるため、集計を挟むときは 0 を選んでおくと安全です。
WRAPCOLS関数との違い:どちらを使えばいい?
WRAPROWSの姉妹関数として WRAPCOLS関数 があります。名前が似ていて混乱しやすいので、しっかり整理しておきましょう。
折り返し方向とデータの流れの対比
同じ6要素 [1,2,3,4,5,6] を wrap_count=3 で処理すると、結果はこう変わります。
| 関数 | データの流れ | 出力 |
|---|---|---|
| WRAPROWS | 左→右、次の行へ | [1,2,3] / [4,5,6] |
| WRAPCOLS | 上→下、次の列へ | [1,4] / [2,5] / [3,6] |
4軸でまとめると次の通りです。
| 比較軸 | WRAPROWS | WRAPCOLS |
|---|---|---|
| 折り返し方向 | 行方向(横に流れる) | 列方向(縦に流れる) |
| wrap_count の意味 | 1行あたりの要素数 | 1列あたりの要素数 |
| 典型用途 | 横書き一覧表・カレンダー | 縦型カード・リストの段組み |
| Excel互換 | あり(引数名同一) | あり(引数名同一) |
使い分けの基準
迷ったらこう考えてください。
- 完成後の表を「横に読んでいく」なら WRAPROWS(新聞・表形式のレポート)
- 完成後の表を「縦に読んでいく」なら WRAPCOLS(名刺の段組み・列優先のリスト)
WRAPCOLSの詳細な使い方はスプレッドシートのWRAPCOLS関数の使い方で解説しているので、あわせて確認してみてください。
実務ユースケース:他の関数と組み合わせる
WRAPROWSは単体でも便利ですが、他の関数と組み合わせるとさらに活きてきます。
TOCOL/TOROWとの連携(2次元範囲を渡す場合のエラー回避)
「A1:D3 の3行4列をいったん並べ替えたい」という場面で、そのままWRAPROWSに渡すと #VALUE! エラーになります。vectorは1次元配列しか受け付けないためです。
先に TOCOL関数 かTOROW関数で1次元化してから渡します。
=WRAPROWS(TOROW(A1:D3), 4)
TOROW(A1:D3) で12個の要素が横1行になり、それをWRAPROWSで4列ずつ折り返す流れです。元の並び順を保ちたいかどうかでTOROW(行優先)とTOCOL(列優先)を使い分けてください。
SORT・FILTERと組み合わせた動的整形
FILTERで抽出した結果をWRAPROWSで整形するパターンも実務で出番があります。
=WRAPROWS(FILTER(A2:A100, B2:B100="有効"), 4, "")
B列が「有効」の行だけA列を抽出し、4列ずつ折り返して空きは空白で埋める一発処理です。件数が増減してもスピルが自動追従するので、レイアウトのメンテが不要になります。
カレンダー風に日付を並べるのもおすすめです。
=WRAPROWS(SEQUENCE(30,1,DATE(2024,1,1),1), 7)
1月1日から30日分の日付を生成し、7列(曜日分)で折り返すとカレンダー状になります。書式を「日付」に設定すれば即実用です。
よくあるエラーと対処法
最後に、WRAPROWSで遭遇しがちな3大エラーをまとめます。
#VALUE! エラー(多次元配列を直接渡したとき)
原因は、vectorに2次元範囲(複数行かつ複数列)を渡したことです。
=WRAPROWS(A1:D3, 4) // NG: 3行4列を直接渡している
TOROWかTOCOLで1次元化してから渡します。
=WRAPROWS(TOROW(A1:D3), 4) // OK
#NUM! エラー(wrap_countに0以下を指定したとき)
wrap_count に 0 や負の数を渡すと #NUM! になります。セル参照でwrap_countを指定している場合、参照先が空や0になっていないか確認してください。
=WRAPROWS(A1:A12, 0) // NG: #NUM!
=WRAPROWS(A1:A12, 4) // OK
#N/A エラー(pad_with省略時の端数セル)
厳密にはエラーというより「想定通りの挙動」ですが、見た目を整えたい・集計に渡したいときは pad_with を明示しましょう。集計用途なら 0、表示用途なら "" が定番です。
WRAPROWS関数は縦データを横に並べ直すシンプルな関数ですが、pad_with の使い分けとWRAPCOLSとの方向の違いを押さえれば、手作業のコピペ地獄から一気に解放されます。FILTERやSEQUENCEと組み合わせれば動的に追従するレイアウトも作れるので、ぜひ手元のシートで試してみてください。
列方向に折り返したいときはWRAPCOLS関数、2次元範囲を前処理したいときはTOCOL関数とセットで覚えておくと、配列操作の引き出しがぐっと広がります。
