2つの関数はデータを並べる方向が異なるだけでほぼ同じですので、WRAPROWS関数を中心に紹介します。
- WRAPROWS/WRAPCOLS関数によりデータを一定列数(行数)で折り返しつつ並べ替えることができます。
機能と構文
WRAPROWS(WRAPCOLS)関数の機能は「指定した範囲の値を横(縦)に並べ、指定した数だけ並べたら次の行(列)に折り返す」というものです。
構文は次のとおりで、第2引数までが必須となっています。
WRAPROWS(範囲, 折り返す列数[, パディング]) WRAPCOLS(範囲, 折り返す行数[, パディング])
同時に導入されたTOROW関数やTOCOL関数に折り返しの機能がついたような感じですが、こちらには特定の値を無視(削除)したり並べる際の順序を指定する機能はありません。
また、第1引数は「範囲」と表現していますが、指定できるのは1行だけ、または1列だけの配列です。複数行複数列の範囲を指定するとエラーになります。これらの点でTOROW関数やTOCOL関数とは使い勝手が異なるものとなっています。
基本的な使い方
WRAPROWS関数の例です。
B列に並んでいる縦1列のデータを横方向(行方向)に、ただし3列で折り返すように並べ替えています。
D2セル
=WRAPROWS(B2:B7,3)
こちらはWRAPCOLS関数の例です。
B列に並んでいる縦1列のデータを改めて縦方向(列方向)に、ただし3行で折り返すように並べ替えています。
D2セル
=WRAPCOLS(B2:B7,3)
正直どっちの関数がどっちの方向に並べるのか迷いますが、これは慣れるしかありません。
2つの関数の違いは並べる方向だけですので、ここからはWRAPROWS関数に絞って進めます。
次のように、第1引数(範囲)として複数行複数列からなる範囲を指定するとエラーになってしまいます。
そこで、TOCOL(TOROW)関数を使って1列(1行)に並べることとし、それを第1引数にすれば複数行複数列の範囲を並べ替えることができます。
D2セル
=WRAPROWS(TOCOL(B2:C4),3)
WRAPROWS関数自体がTOCOL関数のように一定のスキャン方向で範囲を読み取ってくれればこのような手間は省ける気がしますが、こういう仕様ですので仕方ありません。
次の例ではデータが7つあり、一方で折り返しの列数を3と指定しています。
結果的に最後の行がデータで埋まりません。このような場合(つまりデータの数が第2引数の倍数でない場合)、埋まらないセルに#N/Aエラーが表示されます。
ただし、この表示は第3引数を使って変更することができます。
第3引数(パディング)の効果と使用例
1つ上の画像でみたように、データの数と指定した列数によって#N/Aエラーのセルが生じることがあります。
このエラーの代わりに、第3引数で指定した値を表示させることができます。
D2セル
=WRAPROWS(B2:B8,3,"")
ここでは無難に空文字列を指定しています。
ただしGoogleスプレッドシートらしく「=WRAPROWS(B2:B8,3,)」とすれば空白セルを出力することができますので好みで選んでください。
応用例
2行ずつのデータを1行ずつに並べ替える
次の画像では、2行ごとに1つのグループになっている(扱いにくい感じの)データを、1行ごとのグループに並べ替えています。
=WRAPROWS(TOCOL(B2:F7),10)
元のデータが5列からなる表なので、WRAPROWS関数の第2引数で10(5列×2)を指定することで結果的に2行を1行にまとめています。
同様に15にすれば3行を1列にまとめられます。