CSV列並び替え|列の順番を指定して入れ替える

CSV・表データツール

1始まりの列番号を、すべて1回ずつ指定します。例:3,1,2

CSVと列の並び順を入力してください。

このツールでできること

CSVのすべての列を、1始まりの列番号で指定した順番へ並び替えられます。先頭レコードと各データレコードへ同じ列順を適用し、列数が少ないレコードは不足するセルを空文字で補います。

列を省略・複製するツールではありません。CSV全体の最大列数に含まれる列を、すべて1回ずつ指定して位置だけを変更します。

使い方

  1. CSVを入力します。
  2. 列の並び順を、1始まりの列番号ですべて1回ずつ入力します。例えば3列を「地域、名前、年齢」にする場合は 3,1,2 と指定します。
  3. 「列を並び替える」を押します。
  4. 必要に応じて結果をコピーします。

列番号の前後には空白を入れられるため、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を利用できない場合は、結果欄から手動でコピーしてください。