CSV列並び替え|列の順番を指定して入れ替える
1始まりの列番号を、すべて1回ずつ指定します。例:3,1,2
CSVと列の並び順を入力してください。
このツールでできること
CSVのすべての列を、1始まりの列番号で指定した順番へ並び替えられます。先頭レコードと各データレコードへ同じ列順を適用し、列数が少ないレコードは不足するセルを空文字で補います。
列を省略・複製するツールではありません。CSV全体の最大列数に含まれる列を、すべて1回ずつ指定して位置だけを変更します。
使い方
- CSVを入力します。
- 列の並び順を、1始まりの列番号ですべて1回ずつ入力します。例えば3列を「地域、名前、年齢」にする場合は
3,1,2と指定します。 - 「列を並び替える」を押します。
- 必要に応じて結果をコピーします。
列番号の前後には空白を入れられるため、3, 1, 2も3,1,2と同じ指定です。処理後にCSVまたは列順を変更すると、古い結果と概要は消去されます。変更後はもう一度処理してください。
入力例・出力例
次のCSVを入力します。3件目のレコードには3列目がありません。
名前,年齢,地域
山田,30,東京
佐藤,25
列の並び順を3,1,2にすると、結果は次のとおりです。
地域,名前,年齢
東京,山田,30
,佐藤,25
先頭レコードも同じ順番で移動します。佐藤,25の3列目は存在しないため、結果では先頭の空フィールドとして補われます。
3列の入力では、1,1,3のような重複や1,3のような省略は指定できません。
よくある利用場面
- 取込先システムの指定順へCSV列を並べ替えるとき
- 表計算ソフトを開かず、ヘッダーとデータを一括移動するとき
- 行ごとの不足列を空セルで補いながら列順を統一するとき
処理仕様
列順の指定
- CSV全体でフィールド数が最も多いレコードを基準に、最大列数を決めます。最大3列なら、
1から3までを重複なく1回ずつ、3個指定する必要があります。 - 番号は半角数字の1以上の整数で指定します。番号の前後の空白は無視しますが、符号、小数点、全角数字、空の要素、
1-3のような範囲指定は使用できません。 - 列番号の省略、重複、最大列数を超える番号はエラーです。
- 先頭レコードをヘッダーとして自動判定しません。先頭を含む全レコードに同じ並び順を適用します。
- 短いレコードに指定列が存在しない場合、その位置を空フィールドで補い、すべての出力レコードを最大列数へ揃えます。空レコードも空フィールド1個を持つレコードとして解析し、不足分を補います。
CSVの解析と再生成
半角カンマ区切りのCSVを解析します。レコード区切りのLF・CRLF・CR、空フィールド、空レコード、引用符内のカンマと改行、""で表した引用符、入力先頭のBOMに対応します。引用符はフィールドの先頭で開始し、閉じ引用符の後にはカンマ、改行、または入力終端だけを置けます。引用符内の改行はセル値の一部であり、別レコードとして数えません。
結果は並び替え後のセル値からCSVとして再生成します。カンマ、引用符、CR、LFを含むフィールドだけを引用し、内部の引用符は二重化します。レコード区切りはLF、末尾は改行なしです。先頭BOM、不要だった引用符、元のレコード区切りは保持しませんが、引用符内の改行とセル値は保持します。前後空白、Unicode、HTML風文字列、HTMLエンティティ、文字として入力した\n、バックスラッシュを変換・復号しません。
エラーと空文字の結果
空入力、BOMだけの入力、不正なCSV、空または不正な列順はエラーです。エラー時は部分的な結果を出さず、コピーを無効にします。概要の行数には先頭レコードと空レコードを含み、列数にはCSV全体の最大列数を表示します。
空フィールド1個だけのCSVへ列順1を指定すると、出力欄は空に見えます。ただし有効な1レコードの処理結果であるため、空文字をコピーできます。
入力データについて
入力したCSVと列順は、外部ライブラリを使わずブラウザ内だけで処理します。ToolRollのサーバーや外部サービスへの通信は行わず、Cookie、Web Storage、IndexedDBにも保存しません。
「結果をコピー」を押したときだけ、ブラウザのClipboard APIへ結果を渡します。Clipboard APIを利用できない場合は、結果欄から手動でコピーしてください。