縦1列に並んだデータを、複数列の見やすい表に整形し直したい場面はありませんか。12か月分の月次データを3行4列の季節別レイアウトにしたい、50件の商品コードを10行5列のカタログ風にまとめたい、といったニーズです。
手作業でコピペするのは正直つらい作業です。行数が増えるほどミスのリスクも上がります。そこで便利なのが WRAPCOLS 関数です。縦1列の配列を指定した行数ごとに折り返し、列方向に並べ替えてくれます。
この記事では、WRAPCOLS 関数の基本構文から、端数処理のコツ、WRAPROWS との使い分けまで、実務で迷わず使えるレベルまで丁寧に解説します。
スプレッドシートのWRAPCOLS関数とは?
WRAPCOLS(ラップコルズ)は、”wrap(折り返す)” と “columns(列)” を組み合わせた関数名です。1行または1列の1次元配列を指定した行数で折り返し、複数列のレイアウトに整形します。Googleスプレッドシートでは2023年2月頃に、Microsoft 365のExcelから移植された配列関数群の1つとして利用できるようになりました。
できること:縦1列のリストを指定行数で複数列に整形
たとえば A1:A12 に1月から12月までの12か月分のデータが縦に並んでいるとします。このとき =WRAPCOLS(A1:A12, 3) と入力すると、3行ごとに折り返して4列のブロックに変換してくれます。1〜3月が1列目、4〜6月が2列目、7〜9月が3列目、10〜12月が4列目という具合です。
WRAPROWS関数との方向の違い
よく似た関数に WRAPROWS があります。両者の違いは折り返しの方向だけです。
WRAPCOLS: 列方向(縦)に詰めて、右へ折り返していくWRAPROWS: 行方向(横)に詰めて、下へ折り返していく
名前の「COLS(列)」「ROWS(行)」は「どう折り返すか」ではなく「何を単位に詰めるか」を表している、と覚えるとスムーズです。詳しくは スプレッドシートのWRAPROWS関数の使い方 の記事もあわせてご覧ください。
WRAPCOLS関数の基本構文と引数
構文はシンプルで、引数は3つです。
=WRAPCOLS(範囲, 折り返しの値, [代替文字])
英語表記では =WRAPCOLS(range, wrap_count, [pad_with]) です。Excelでは第1引数が vector と呼ばれますが、Googleスプレッドシートの関数ヘルプでは「範囲」と表示されます。動作は完全に同じです。
第1引数:範囲(1次元の行または列)
折り返したい元データの範囲を指定します。重要なのが「1次元配列のみ受け付ける」という制約です。A1:A12(1列)や A1:L1(1行)はOKですが、A1:C5 のような複数行×複数列の2次元範囲を渡すと #VALUE! エラーになります。
2次元データを扱いたい場合は、先に TOCOL 関数などで1列に直してから渡すパターンが便利です。詳しくは後半の実務ユースケースで紹介します。
第2引数:折り返しの値(何行ごとに折り返すか)
1列あたりに入れる最大の行数を整数で指定します。ここがやや直感に反するポイントで、「列数を指定する」のではなく「1列に詰める行数を指定する」のです。
=WRAPCOLS(A1:A12, 3) // 各列に3行ずつ入れる → 結果は3行4列
=WRAPCOLS(A1:A12, 4) // 各列に4行ずつ入れる → 結果は4行3列
=WRAPCOLS(A1:A12, 6) // 各列に6行ずつ入れる → 結果は6行2列
小数を渡すと切り捨てられ、0以下を指定すると #NUM! エラーになります。
第3引数:代替文字(端数セルの埋め方)
折り返した結果、最後の列にセルが余ったときの埋め方を指定します。省略するとそのセルには #N/A が入ります。業務で使うときはほぼ必ず指定しておきたい引数です。
基本的な使い方:縦1列リストを複数列に変換する
実際に手を動かしながら見ていきましょう。
サンプル:12か月データを3行4列に変換
A1:A12 に「1月」から「12月」までの文字列が入っているとします。
=WRAPCOLS(A1:A12, 3)
この式をC1セルなどに入力すると、C1:F3の範囲にスピル展開され、次のような表になります。
| 列1 | 列2 | 列3 | 列4 |
|---|---|---|---|
| 1月 | 4月 | 7月 | 10月 |
| 2月 | 5月 | 8月 | 11月 |
| 3月 | 6月 | 9月 | 12月 |
1列目に1〜3月(Q1)、2列目に4〜6月(Q2)、と四半期ごとのレイアウトが自動で生成できました。
サンプル:週次7日データを1週7行で整形
1日ごとの売上データなど、日次のデータを週単位の縦列に並べ替えたいケースです。28日分(4週間)のデータが A1:A28 にあるとき、次のように書きます。
=WRAPCOLS(A1:A28, 7)
各列が1週間分(7日)の縦リストになり、4列並びます。曜日ヘッダーを隣に添えれば、そのままシフト表や週報の土台として使えます。
サンプル:SEQUENCEでテスト用データを作る
「実際にデータを並べる前に、挙動を確認したい」というときは SEQUENCE 関数と組み合わせるのが便利です。
=WRAPCOLS(SEQUENCE(12), 3)
1〜12の連番が3行4列に展開されます。どこに何が入るかが数字で直感的にわかるので、引数の値を変えて試す練習にも向いています。
pad_with(パディング値)の活用:端数セルをきれいに処理する
A1:A10 の10項目を wrap_count=3 で折り返してみましょう。10÷3=3あまり1なので、4列目の2行目・3行目がどうしても余ります。このときの挙動を3パターン比較します。
省略時(#N/Aが入る)
=WRAPCOLS(A1:A10, 3)
余ったセルには #N/A が表示されます。見栄えが悪く、そのセルを参照する下流の計算にもエラーが伝播するので、業務用途ではおすすめしません。
空文字列を指定する
=WRAPCOLS(A1:A10, 3, "")
余ったセルは空白になります。見た目がきれいで、他の関数からの参照も壊れにくいので、汎用的に使える指定です。迷ったらまずこれを指定するのが無難です。
任意の値(「-」など)を指定する
=WRAPCOLS(A1:A10, 3, "-")
=WRAPCOLS(A1:A10, 3, 0)
ハイフンやゼロなど、任意の値を埋められます。「データなし」を明示的に示したいレポートや、合計計算の対象にしたいときに便利です。
| pad_with の指定 | 端数セルの表示 | 向いている用途 |
|---|---|---|
| 省略 | #N/A | 端数が出ないと確信できるときのみ |
""(空文字列) | 空白 | 見栄え重視の表示用整形 |
"-" など任意の文字列 | 指定した文字 | 「該当なし」を明示したい帳票 |
0 など任意の数値 | 指定した数値 | 集計・合計対象に含めたい数値データ |
WRAPROWSとの違い・使い分け
同じ「折り返し系」の兄弟関数 WRAPROWS との違いを整理します。
行方向か列方向か:感覚的な判断ポイント
縦1列のデータ [1,2,3,4,5,6] を wrap_count=3 で折り返した場合、それぞれ次のようになります。
=WRAPCOLS({1;2;3;4;5;6}, 3)
// → 3行2列
// 1 4
// 2 5
// 3 6
=WRAPROWS({1;2;3;4;5;6}, 3)
// → 2行3列
// 1 2 3
// 4 5 6
WRAPCOLS は「縦に詰めてから右へ」、WRAPROWS は「横に詰めてから下へ」と動く、と覚えると迷いません。
どちらを使うべきか:実務シナリオ別
- WRAPCOLSが向く例: 月次12件を四半期別(3行4列)に並べる、従業員名簿を部署ごとに列で分ける、商品コードをカタログ形式の縦リスト×複数列にする
- WRAPROWSが向く例: 週次7日データを4週分の4行7列に整形する、横長のログを指定件数ごとの行に折り返す
「最終的に縦長にしたいか、横長にしたいか」を先にイメージすると選びやすいです。
実務ユースケース:こんな場面で使える
月次レポートデータを月別列に整形
月次KPIを「Q1・Q2・Q3・Q4」の4列にまとめたいときは、次のように書きます。
=WRAPCOLS(A1:A12, 3, "")
四半期ごとのレビュー資料や、横並びで比較したい分析シートの下準備に使えます。
商品カタログを列グループに分けて表示
商品コードが50件、A1:A50 に縦に並んでいるとします。10行×5列のカタログ形式にしたいときは次のとおりです。
=WRAPCOLS(A1:A50, 10)
50は10で割り切れるので端数は出ません。割り切れない件数(例:52件)の場合は pad_with="" を指定して空白で埋めるときれいです。
TOCOLと組み合わせて2次元→1列→複数列に変換
WRAPCOLS は1次元配列しか受け付けませんが、前処理に TOCOL関数 を挟めば2次元範囲も扱えます。たとえば A1:C10(10行×3列)の30件を、5行6列に並べ替えたいとき。
=WRAPCOLS(TOCOL(A1:C10), 5)
TOCOL でまず縦1列の30件に直し、それを WRAPCOLS で5行ごとに折り返します。転置して処理したい場合は TRANSPOSE関数 との合わせ技も有効です。複数表の結合が絡む場合は VSTACK関数 や HSTACK関数 も選択肢に入ります。
よくあるエラーと対処法
#N/Aエラー:端数が出た場合
原因は pad_with を省略したまま、折り返し時に端数が発生したケースです。第3引数に "" や任意の値を指定するだけで解消します。
// NG: 10件をwrap_count=3で折り返すと #N/A が残る
=WRAPCOLS(A1:A10, 3)
// OK: 空文字で埋めて見た目をきれいに
=WRAPCOLS(A1:A10, 3, "")
#VALUE!エラー:引数が1次元でない場合
WRAPCOLS の第1引数は1行または1列の1次元配列のみ受け付けます。A1:C10 のような2次元範囲を渡すと #VALUE! になります。TOCOL で1列化してから渡すか、範囲を1列または1行に絞り直してください。
#NUM!エラー:折り返しの値が0以下
wrap_count に 0 や負の数を指定するとこのエラーになります。1以上の整数を指定してください。小数は自動で切り捨てられます。
Excelファイルとの互換性
WRAPCOLS はMicrosoft 365およびExcel 2024以降で利用できます。Excel 2021以前で作成されたファイルをスプレッドシートで開いた場合、WRAPCOLS 式はそのまま動作します。逆に、WRAPCOLS 式を含むファイルをExcel 2021以前で開くと計算できないため注意してください。ExcelとGoogleスプレッドシートの挙動比較は ExcelのWRAPCOLS関数の使い方 の記事も参考になります。
まとめ
WRAPCOLS 関数は、縦1列のデータを「1列あたり何行」で折り返すかを指定して、複数列のレイアウトに整形する関数です。押さえておきたいポイントをおさらいします。
- 構文は
=WRAPCOLS(範囲, 折り返しの値, [代替文字]) - 第1引数は1次元配列のみ。2次元は
TOCOLなどで先に1列化する - 第2引数は「列数」ではなく「1列あたりの行数」
- 第3引数
pad_withは基本""を指定しておくと端数トラブルを防げる - 折り返し方向を変えたいときは
WRAPROWSを使う
月次データの四半期別整形、週次データの週別整形、商品カタログの列分割など、手作業コピペが発生しがちな場面で大きな時短効果があります。TOCOL・TOROW・TRANSPOSE・VSTACK などの配列操作関数と組み合わせると整形パターンの幅が一気に広がります。ぜひセットで使いこなしていきましょう。
