365・LibreOfficeなどに関するメモ2020-01-01(Excel)表のデータを縦1列に並べ替えるExcel[注:Office365では2022年にTOCOL関数が導入され、簡単に並べ替えることができます]Excelで2列以上の表に並べられているデータを、関数を使って1列に並べなおす方法についてです。INDEX関数とSEQUENCE関数などを用いて、表に並んでいるデータを縦1列に並べ替えることができます。手順B2:E4の範囲に12個のデータが並んでいます。これを縦1列(12行)に並べるものとします。B6セルに次のように入力します。=INDEX(B2:E4,CEILING(SEQUENCE(12)/4,1),MOD(SEQUENCE(12)-1,4)+1)INDEX関数の第1引数として表の範囲(B2:E4)を、そして第2引数と第3引数としてそれぞれSEQUENCE関数で生成される数列を与えることにより、値をピックして縦1列に並べています。INDEX関数の第2引数(表中の行番号の指定)は1から12までの数列を表の列数(4)で割って切り上げたもので、結果的に1,1,1,1,2,2,2,2,3,3,3,3という数列になります。INDEX関数の第3引数(行番号の指定)は0から11までの数列を表の列数(4)で割った余りに1を足したもので、結果的に1,2,3,4,1,2,3,4,1,2,3,4という数列になります。SEQUENCE関数の引数12は表に含まれるセル数です。表の列数(4)やセル数(12)を即値で指定するのではなく表参照から求める場合はそれぞれ「COLUMN(B2:E4)」と「ROWS(B2:E4)*COLUMNS(B2:E4)」に置き換えることとなりますが、次のようにかなり長くなってしまいます。=INDEX(B2:E4,CEILING(SEQUENCE(ROWS(B2:E4)*COLUMNS(B2:E4))/COLUMNS(B2:E4),1),MOD(SEQUENCE(ROWS(B2:E4)*COLUMNS(B2:E4))-1,COLUMNS(B2:E4))+1)また、値をピックする順番は1行目→2行目→3行目となっていますが、これを1列目→2列目→3列目→4列目とする場合は次のようにします。=INDEX(B2:E4,MOD(SEQUENCE(12)-1,3)+1,CEILING(SEQUENCE(12)/3,1))なお、逆の操作(縦1列から表に)については次の記事をご覧ください。365はデスクトップ版、LibreOfficeは記事作成時の安定バージョンを用いた結果を示しています。サイトポリシー等についてはこちらをご覧ください。(1)検索スポンサーリンク引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。