戻る

CSV ビューアー・データ整形

データ変換

読み込み中

ツールを読み込んでいます

ツールを準備しています。残り時間はまだわかりません。

このツールの処理はすべてブラウザー内で行われ、入力内容はサーバーへ送信されません。

このツールについて

CSV・TSV のエクスポートを確認してから、必要な変更だけを指定できます。値を処理する共通の列セットを位置で選び、前後の空白を除去し、既存の空セルや指定文字列を置換し、必要に応じて入出力形式を明示して日付を統一します。任意の空行削除と複合キーによる重複削除は、その後に実行されます。元データと整形後のプレビュー、各段階の件数、無効な日付の例を確認してからダウンロードしてください。元の解析データは変更されないため、ルールをリセットしてやり直せます。処理はブラウザーのローカル Worker 内で実行されます。

主な用途

  • 顧客一覧の氏名や ID の前後空白を除去し、既知の N/A 表記を置換して、別システムへ取り込む前に変更箇所を確認する。
  • 形式が分かっている DD/MM/YYYY の日付列を YYYY-MM-DD に統一し、不正な日付は推測やタイムゾーン変換をせず、そのまま報告する。
  • 全セルが空の行を削除し、重複キーの先頭・末尾を残すか全件を除去する。001 と 1 を区別し、元の行順序を保つ。

使い方

  1. 1.区切りテキストを貼り付けるか UTF-8 ファイルを選び、カンマ・タブと、先頭レコードをヘッダーとして扱うかを指定します。変更を有効にする前に表を確認してください。空や重複したヘッダー、列数の異なる行も扱えます。列は位置で選ぶため、同名でも区別できます。
  2. 2.必要なルールだけを有効にします。共通の選択列に、有効な空白除去・空セル/完全一致トークン置換・日付変換がすべて適用されます。必要な置換文字列と日付の入出力形式を指定してください。日付を有効にするときは日付列だけを選びます。同じ選択列内の別の非空テキストは無効な日付として報告されます。順序は空白除去 → 置換 → 日付 → 空行削除 → 重複削除で固定です。置換は大文字・小文字を区別したセル全体の一致で行い、空文字列への置換も可能です。
  3. 3.重複削除では一つ以上のキー列を選び、先頭を残す・末尾を残す・重複グループを全件削除のいずれかを指定します。整形を実行し、変更前後と各段階の件数を比較してください。変更されなかった無効な日付や、残った行の元の行番号も確認します。入力や設定を変えると古い結果は無効になり、再実行は常に元データから行われます。リセットは逆変換ではなくルールの解除です。 整形済み CSV/TSV または行配列を含む JSON レポートをダウンロードします。入力時のヘッダー設定によって、CSV/TSV に元のヘッダーをそのまま含めるかが決まります。ヘッダーなし入力に出力ヘッダーを追加することはありません。データ列の順番は元のままです。表計算ソフトでの確認には数式対策を有効にし、生データ出力を選ぶ場合は警告を確認してください。JSON は解析後の文字列と不揃いな行の長さを保持します。クリアすると現在の入力と結果が削除されます。

CSV 整形の具体例

選択列だけの前後空白を除去

{
  "input": "id,name,note\n 001 , Alice , keep \n1,Bob, as is ",
  "parseOptions": {
    "delimiter": ",",
    "header": true
  },
  "options": {
    "columns": [
      0,
      1
    ],
    "trim": true,
    "nulls": {
      "enabled": false,
      "tokens": [],
      "replaceEmpty": false,
      "replacement": ""
    },
    "dates": {
      "enabled": false,
      "inputFormat": "YYYY-MM-DD",
      "outputFormat": "YYYY-MM-DD"
    },
    "removeEmptyRows": false,
    "dedupe": {
      "enabled": false,
      "columns": [],
      "keep": "first"
    }
  }
}
{
  "headers": [
    "id",
    "name",
    "note"
  ],
  "hasHeader": true,
  "columnCount": 3,
  "rows": [
    [
      "001",
      "Alice",
      " keep "
    ],
    [
      "1",
      "Bob",
      " as is "
    ]
  ],
  "summary": {
    "inputRows": 2,
    "outputRows": 2,
    "columns": 3,
    "trimmedCells": 2,
    "replacedCells": 0,
    "convertedDates": 0,
    "invalidDates": 0,
    "emptyRowsRemoved": 0,
    "duplicateRowsRemoved": 0,
    "duplicateGroups": 0,
    "changedCells": 2,
    "changedRows": 1
  },
  "sourceRows": [
    1,
    2
  ]
}

1、2 列目を選びます(例のゼロ始まりの添字は 0、1)。id と name のノーブレークスペース・全角空白だけを除去し、未選択の note の空白と文字列 ID 001 は保持します。

空セル・指定トークン・欠落を区別

{
  "input": "id,value\n1,\n2,N/A\n3,null\n4\n5,n/a",
  "parseOptions": {
    "delimiter": ",",
    "header": true
  },
  "options": {
    "columns": [
      1
    ],
    "trim": false,
    "nulls": {
      "enabled": true,
      "tokens": [
        "N/A"
      ],
      "replaceEmpty": true,
      "replacement": "(missing)"
    },
    "dates": {
      "enabled": false,
      "inputFormat": "YYYY-MM-DD",
      "outputFormat": "YYYY-MM-DD"
    },
    "removeEmptyRows": false,
    "dedupe": {
      "enabled": false,
      "columns": [],
      "keep": "first"
    }
  }
}
{
  "headers": [
    "id",
    "value"
  ],
  "hasHeader": true,
  "columnCount": 2,
  "rows": [
    [
      "1",
      "(missing)"
    ],
    [
      "2",
      "(missing)"
    ],
    [
      "3",
      "null"
    ],
    [
      "4"
    ],
    [
      "5",
      "n/a"
    ]
  ],
  "summary": {
    "inputRows": 5,
    "outputRows": 5,
    "columns": 2,
    "trimmedCells": 0,
    "replacedCells": 2,
    "convertedDates": 0,
    "invalidDates": 0,
    "emptyRowsRemoved": 0,
    "duplicateRowsRemoved": 0,
    "duplicateGroups": 0,
    "changedCells": 2,
    "changedRows": 2
  },
  "sourceRows": [
    1,
    2,
    3,
    4,
    5
  ]
}

既存の空セルと大文字 N/A を (missing) に置換します。4 行目の欠落した末尾フィールドは埋めません。文字列 null と小文字 n/a は指定トークンではないため、そのままです。

日/月/年を変換し、不正値は修復しない

{
  "input": "id,date\nA,29/02/2024\nB,29/02/2023\nC,31/04/2024\nD,01/02/2024\nE,\nF,1/2/2024",
  "parseOptions": {
    "delimiter": ",",
    "header": true
  },
  "options": {
    "columns": [
      1
    ],
    "trim": false,
    "nulls": {
      "enabled": false,
      "tokens": [],
      "replaceEmpty": false,
      "replacement": ""
    },
    "dates": {
      "enabled": true,
      "inputFormat": "DD/MM/YYYY",
      "outputFormat": "YYYY-MM-DD"
    },
    "removeEmptyRows": false,
    "dedupe": {
      "enabled": false,
      "columns": [],
      "keep": "first"
    }
  }
}
{
  "headers": [
    "id",
    "date"
  ],
  "hasHeader": true,
  "columnCount": 2,
  "rows": [
    [
      "A",
      "2024-02-29"
    ],
    [
      "B",
      "29/02/2023"
    ],
    [
      "C",
      "31/04/2024"
    ],
    [
      "D",
      "2024-02-01"
    ],
    [
      "E",
      ""
    ],
    [
      "F",
      "1/2/2024"
    ]
  ],
  "summary": {
    "inputRows": 6,
    "outputRows": 6,
    "columns": 2,
    "trimmedCells": 0,
    "replacedCells": 0,
    "convertedDates": 2,
    "invalidDates": 3,
    "emptyRowsRemoved": 0,
    "duplicateRowsRemoved": 0,
    "duplicateGroups": 0,
    "changedCells": 2,
    "changedRows": 2
  },
  "sourceRows": [
    1,
    2,
    3,
    4,
    5,
    6
  ]
}

2024 年の閏日と 2 月 1 日を変換します。2023 年の閏日、4 月 31 日、桁不足の 1/2/2024 は変更せず、無効セル 3 件と数えます。空文字はスキップし、無効な日付には数えません。

月/日/年を明示して解釈

{
  "input": "date\n01/02/2024\n12/31/2024",
  "parseOptions": {
    "delimiter": ",",
    "header": true
  },
  "options": {
    "columns": [
      0
    ],
    "trim": false,
    "nulls": {
      "enabled": false,
      "tokens": [],
      "replaceEmpty": false,
      "replacement": ""
    },
    "dates": {
      "enabled": true,
      "inputFormat": "MM/DD/YYYY",
      "outputFormat": "YYYY-MM-DD"
    },
    "removeEmptyRows": false,
    "dedupe": {
      "enabled": false,
      "columns": [],
      "keep": "first"
    }
  }
}
{
  "headers": [
    "date"
  ],
  "hasHeader": true,
  "columnCount": 1,
  "rows": [
    [
      "2024-01-02"
    ],
    [
      "2024-12-31"
    ]
  ],
  "summary": {
    "inputRows": 2,
    "outputRows": 2,
    "columns": 1,
    "trimmedCells": 0,
    "replacedCells": 0,
    "convertedDates": 2,
    "invalidDates": 0,
    "emptyRowsRemoved": 0,
    "duplicateRowsRemoved": 0,
    "duplicateGroups": 0,
    "changedCells": 2,
    "changedRows": 2
  },
  "sourceRows": [
    1,
    2
  ]
}

MM/DD/YYYY を選ぶため、01/02/2024 は 1 月 2 日になります。DD/MM/YYYY なら同じ文字列は 2 月 1 日です。元データの慣習をツールが推測することはありません。

世紀の閏年と 4 桁の年範囲を確認

{
  "input": "date\n0001/01/01\n2000/02/29\n1900/02/29\n0000/01/01\n9999/12/31",
  "parseOptions": {
    "delimiter": ",",
    "header": true
  },
  "options": {
    "columns": [
      0
    ],
    "trim": false,
    "nulls": {
      "enabled": false,
      "tokens": [],
      "replaceEmpty": false,
      "replacement": ""
    },
    "dates": {
      "enabled": true,
      "inputFormat": "YYYY/MM/DD",
      "outputFormat": "DD/MM/YYYY"
    },
    "removeEmptyRows": false,
    "dedupe": {
      "enabled": false,
      "columns": [],
      "keep": "first"
    }
  }
}
{
  "headers": [
    "date"
  ],
  "hasHeader": true,
  "columnCount": 1,
  "rows": [
    [
      "01/01/0001"
    ],
    [
      "29/02/2000"
    ],
    [
      "1900/02/29"
    ],
    [
      "0000/01/01"
    ],
    [
      "31/12/9999"
    ]
  ],
  "summary": {
    "inputRows": 5,
    "outputRows": 5,
    "columns": 1,
    "trimmedCells": 0,
    "replacedCells": 0,
    "convertedDates": 3,
    "invalidDates": 2,
    "emptyRowsRemoved": 0,
    "duplicateRowsRemoved": 0,
    "duplicateGroups": 0,
    "changedCells": 3,
    "changedRows": 3
  },
  "sourceRows": [
    1,
    2,
    3,
    4,
    5
  ]
}

0001 年と 9999 年に対応します。2000 年は閏年ですが 1900 年は違います。0000 年は対象外です。指定した出力形式で日を先頭にし、タイムゾーンは使用しません。

空白除去後に空レコードを削除

{
  "input": "a,b\n  , \n,\n,keep\nx",
  "parseOptions": {
    "delimiter": ",",
    "header": true
  },
  "options": {
    "columns": [
      0,
      1
    ],
    "trim": true,
    "nulls": {
      "enabled": false,
      "tokens": [],
      "replaceEmpty": false,
      "replacement": ""
    },
    "dates": {
      "enabled": false,
      "inputFormat": "YYYY-MM-DD",
      "outputFormat": "YYYY-MM-DD"
    },
    "removeEmptyRows": true,
    "dedupe": {
      "enabled": false,
      "columns": [],
      "keep": "first"
    }
  }
}
{
  "headers": [
    "a",
    "b"
  ],
  "hasHeader": true,
  "columnCount": 2,
  "rows": [
    [
      "",
      "keep"
    ],
    [
      "x"
    ]
  ],
  "summary": {
    "inputRows": 4,
    "outputRows": 2,
    "columns": 2,
    "trimmedCells": 2,
    "replacedCells": 0,
    "convertedDates": 0,
    "invalidDates": 0,
    "emptyRowsRemoved": 2,
    "duplicateRowsRemoved": 0,
    "duplicateGroups": 0,
    "changedCells": 2,
    "changedRows": 1
  },
  "sourceRows": [
    3,
    4
  ]
}

先頭のデータ行は空白除去で全セルが空になり、2 行目は元から空なので、両方を削除します。一部に値がある 3 行目と短い 4 行目は残り、元の行番号は 3、4 です。

固定順序と段階別件数を確認

{
  "input": "date,note\n 01/02/2024 ,first\nN/A,replacement\n,\n01/02/2024,last",
  "parseOptions": {
    "delimiter": ",",
    "header": true
  },
  "options": {
    "columns": [
      0
    ],
    "trim": true,
    "nulls": {
      "enabled": true,
      "tokens": [
        "N/A"
      ],
      "replaceEmpty": false,
      "replacement": "01/02/2024"
    },
    "dates": {
      "enabled": true,
      "inputFormat": "DD/MM/YYYY",
      "outputFormat": "YYYY-MM-DD"
    },
    "removeEmptyRows": true,
    "dedupe": {
      "enabled": true,
      "columns": [
        0
      ],
      "keep": "first"
    }
  }
}
{
  "headers": [
    "date",
    "note"
  ],
  "hasHeader": true,
  "columnCount": 2,
  "rows": [
    [
      "2024-02-01",
      "first"
    ]
  ],
  "summary": {
    "inputRows": 4,
    "outputRows": 1,
    "columns": 2,
    "trimmedCells": 1,
    "replacedCells": 1,
    "convertedDates": 3,
    "invalidDates": 0,
    "emptyRowsRemoved": 1,
    "duplicateRowsRemoved": 2,
    "duplicateGroups": 1,
    "changedCells": 3,
    "changedRows": 3
  },
  "sourceRows": [
    1
  ]
}

date 列だけを選びます。空白除去と N/A 置換の後に日付を変換するため、1、2、4 行目のキーが同じになります。空の 3 行目を削除し、先頭保持で 1 行目を残します。結果が 1 行でも日付変更は 3 件です。段階別件数は重なります。

末尾を残し、元の行順序を維持

{
  "input": "key,value\nA,first\nB,middle\nA,last\nC,tail\nB,final",
  "parseOptions": {
    "delimiter": ",",
    "header": true
  },
  "options": {
    "columns": [],
    "trim": false,
    "nulls": {
      "enabled": false,
      "tokens": [],
      "replaceEmpty": false,
      "replacement": ""
    },
    "dates": {
      "enabled": false,
      "inputFormat": "YYYY-MM-DD",
      "outputFormat": "YYYY-MM-DD"
    },
    "removeEmptyRows": false,
    "dedupe": {
      "enabled": true,
      "columns": [
        0
      ],
      "keep": "last"
    }
  }
}
{
  "headers": [
    "key",
    "value"
  ],
  "hasHeader": true,
  "columnCount": 2,
  "rows": [
    [
      "A",
      "last"
    ],
    [
      "C",
      "tail"
    ],
    [
      "B",
      "final"
    ]
  ],
  "summary": {
    "inputRows": 5,
    "outputRows": 3,
    "columns": 2,
    "trimmedCells": 0,
    "replacedCells": 0,
    "convertedDates": 0,
    "invalidDates": 0,
    "emptyRowsRemoved": 0,
    "duplicateRowsRemoved": 2,
    "duplicateGroups": 2,
    "changedCells": 0,
    "changedRows": 0
  },
  "sourceRows": [
    3,
    4,
    5
  ]
}

最後の A は元の 3 行目、最後の B は 5 行目です。4 行目の C はその間に残ります。出力は保持行の順序で A、C、B となり、キーグループ順の A、B、C にはなりません。

重複キーのグループ全件を削除

{
  "input": "key,value\nA,first\nB,middle\nA,last\nC,tail\nB,final",
  "parseOptions": {
    "delimiter": ",",
    "header": true
  },
  "options": {
    "columns": [],
    "trim": false,
    "nulls": {
      "enabled": false,
      "tokens": [],
      "replaceEmpty": false,
      "replacement": ""
    },
    "dates": {
      "enabled": false,
      "inputFormat": "YYYY-MM-DD",
      "outputFormat": "YYYY-MM-DD"
    },
    "removeEmptyRows": false,
    "dedupe": {
      "enabled": true,
      "columns": [
        0
      ],
      "keep": "none"
    }
  }
}
{
  "headers": [
    "key",
    "value"
  ],
  "hasHeader": true,
  "columnCount": 2,
  "rows": [
    [
      "C",
      "tail"
    ]
  ],
  "summary": {
    "inputRows": 5,
    "outputRows": 1,
    "columns": 2,
    "trimmedCells": 0,
    "replacedCells": 0,
    "convertedDates": 0,
    "invalidDates": 0,
    "emptyRowsRemoved": 0,
    "duplicateRowsRemoved": 4,
    "duplicateGroups": 2,
    "changedCells": 0,
    "changedRows": 0
  },
  "sourceRows": [
    4
  ]
}

none は重複削除の無効化ではなく、重複グループのどの行も残さない設定です。A の 2 行と B の 2 行を削除し、一意な C だけを残します。

複合文字列・先頭ゼロ・欠落を区別

{
  "input": "region,id\nnorth,001\nnorth,1\nsouth,001\nnorth,001\nnorth\nnorth,\na|b,c\na,b|c",
  "parseOptions": {
    "delimiter": ",",
    "header": true
  },
  "options": {
    "columns": [],
    "trim": false,
    "nulls": {
      "enabled": false,
      "tokens": [],
      "replaceEmpty": false,
      "replacement": ""
    },
    "dates": {
      "enabled": false,
      "inputFormat": "YYYY-MM-DD",
      "outputFormat": "YYYY-MM-DD"
    },
    "removeEmptyRows": false,
    "dedupe": {
      "enabled": true,
      "columns": [
        0,
        1
      ],
      "keep": "first"
    }
  }
}
{
  "headers": [
    "region",
    "id"
  ],
  "hasHeader": true,
  "columnCount": 2,
  "rows": [
    [
      "north",
      "001"
    ],
    [
      "north",
      "1"
    ],
    [
      "south",
      "001"
    ],
    [
      "north"
    ],
    [
      "north",
      ""
    ],
    [
      "a|b",
      "c"
    ],
    [
      "a",
      "b|c"
    ]
  ],
  "summary": {
    "inputRows": 8,
    "outputRows": 7,
    "columns": 2,
    "trimmedCells": 0,
    "replacedCells": 0,
    "convertedDates": 0,
    "invalidDates": 0,
    "emptyRowsRemoved": 0,
    "duplicateRowsRemoved": 1,
    "duplicateGroups": 1,
    "changedCells": 0,
    "changedRows": 0
  },
  "sourceRows": [
    1,
    2,
    3,
    5,
    6,
    7,
    8
  ]
}

完全な north + 001 キーが重複するのは元の 4 行目だけです。001 と 1、north と欠落 id の組と north と空 id の組は別です。[a|b, c] と [a, b|c] も区切り文字連結による衝突を起こしません。

重複ヘッダー・不揃いな行・引用テキストを保持

{
  "input": ",name,name\n001,\"A, \"\"B\"\"\",\"line1\nline2\"\n002,x\n003,,tail,extra",
  "parseOptions": {
    "delimiter": ",",
    "header": true
  },
  "options": {
    "columns": [],
    "trim": false,
    "nulls": {
      "enabled": false,
      "tokens": [],
      "replaceEmpty": false,
      "replacement": ""
    },
    "dates": {
      "enabled": false,
      "inputFormat": "YYYY-MM-DD",
      "outputFormat": "YYYY-MM-DD"
    },
    "removeEmptyRows": false,
    "dedupe": {
      "enabled": false,
      "columns": [],
      "keep": "first"
    }
  }
}
{
  "headers": [
    "",
    "name",
    "name"
  ],
  "hasHeader": true,
  "columnCount": 4,
  "rows": [
    [
      "001",
      "A, \"B\"",
      "line1\nline2"
    ],
    [
      "002",
      "x"
    ],
    [
      "003",
      "",
      "tail",
      "extra"
    ]
  ],
  "summary": {
    "inputRows": 3,
    "outputRows": 3,
    "columns": 4,
    "trimmedCells": 0,
    "replacedCells": 0,
    "convertedDates": 0,
    "invalidDates": 0,
    "emptyRowsRemoved": 0,
    "duplicateRowsRemoved": 0,
    "duplicateGroups": 0,
    "changedCells": 0,
    "changedRows": 0
  },
  "sourceRows": [
    1,
    2,
    3
  ]
}

空と同名のヘッダーはそのままです。ヘッダーは 3 列でも最長のデータ行に合わせて列数は 4 です。引用内のカンマ、二重引用符、改行はセルのテキストとして解析し、短い行を保存結果で埋めません。

ヘッダーなし TSV を位置で整形

{
  "input": "001\t x \n1\ty\n001\t x ",
  "parseOptions": {
    "delimiter": "\t",
    "header": false
  },
  "options": {
    "columns": [
      1
    ],
    "trim": true,
    "nulls": {
      "enabled": false,
      "tokens": [],
      "replaceEmpty": false,
      "replacement": ""
    },
    "dates": {
      "enabled": false,
      "inputFormat": "YYYY-MM-DD",
      "outputFormat": "YYYY-MM-DD"
    },
    "removeEmptyRows": false,
    "dedupe": {
      "enabled": true,
      "columns": [
        0
      ],
      "keep": "first"
    }
  }
}
{
  "headers": [
    "column1",
    "column2"
  ],
  "hasHeader": false,
  "columnCount": 2,
  "rows": [
    [
      "001",
      "x"
    ],
    [
      "1",
      "y"
    ]
  ],
  "summary": {
    "inputRows": 3,
    "outputRows": 2,
    "columns": 2,
    "trimmedCells": 2,
    "replacedCells": 0,
    "convertedDates": 0,
    "invalidDates": 0,
    "emptyRowsRemoved": 0,
    "duplicateRowsRemoved": 1,
    "duplicateGroups": 1,
    "changedCells": 2,
    "changedRows": 2
  },
  "sourceRows": [
    1,
    2
  ]
}

タブを明示し、先頭レコードもデータとして扱います。column1、column2 は表示用の列名で、CSV にヘッダーを挿入するものではありません。2 列目を空白除去してから 1 列目で重複削除し、001 と 1 は別 ID のままです。

整形値を変えずに数式対策付き CSV を出力

{
  "input": "=header,value\n=1+1,001\n@cmd,\"line1\nline2\"\n  +2,",
  "parseOptions": {
    "delimiter": ",",
    "header": true
  },
  "options": {
    "columns": [],
    "trim": false,
    "nulls": {
      "enabled": false,
      "tokens": [],
      "replaceEmpty": false,
      "replacement": ""
    },
    "dates": {
      "enabled": false,
      "inputFormat": "YYYY-MM-DD",
      "outputFormat": "YYYY-MM-DD"
    },
    "removeEmptyRows": false,
    "dedupe": {
      "enabled": false,
      "columns": [],
      "keep": "first"
    }
  },
  "export": {
    "format": "csv",
    "safe": true,
    "delimiter": ","
  }
}
{
  "headers": [
    "=header",
    "value"
  ],
  "hasHeader": true,
  "columnCount": 2,
  "rows": [
    [
      "=1+1",
      "001"
    ],
    [
      "@cmd",
      "line1\nline2"
    ],
    [
      "  +2",
      ""
    ]
  ],
  "summary": {
    "inputRows": 3,
    "outputRows": 3,
    "columns": 2,
    "trimmedCells": 0,
    "replacedCells": 0,
    "convertedDates": 0,
    "invalidDates": 0,
    "emptyRowsRemoved": 0,
    "duplicateRowsRemoved": 0,
    "duplicateGroups": 0,
    "changedCells": 0,
    "changedRows": 0
  },
  "sourceRows": [
    1,
    2,
    3
  ],
  "exported": "\"'=header\",\"value\"\r\n\"'=1+1\",\"001\"\r\n\"'@cmd\",\"line1\nline2\"\r\n\"'  +2\",\"\""
}

整形結果は元の文字列のままです。保護付き CSV への変換時だけ、数式風のヘッダーやセルにアポストロフィを付けます。空白の後の +2 も対象です。全フィールドを引用し、レコード区切りは CRLF にします。001 の文字列扱いを表計算ソフトに強制する対策ではありません。

CSV 整形でよくある間違い

  • 重複ヘッダーの名前だけを見て、列の位置を確認しない。
  • 空白除去で内部空白、ゼロ幅文字、すべての Unicode 書式文字も消えると思い込む。
  • 末尾の欠落フィールド、空文字、null という文字列を同じ値として扱う。
  • 日/月/年のデータに MM/DD/YYYY を指定したり、無効な日付が自動修復されると考えたりする。
  • 空白除去や置換で、元は異なった重複判定キーが同じになることを見落とす。
  • 代表行を一つ残したいのに、重複グループ全件削除を選ぶ。
  • 各段階の件数を単純に合計し、同じセルや行は一度しか数えられないと思い込む。
  • 信頼できない生 CSV を表計算ソフトで開く、または引用符で囲めば ID の先頭ゼロが保たれると思い込む。

制限と注意事項

  • 入力の上限はファイルのバイト数と復号後 UTF-8 テキストがそれぞれ 2 MiB、データ 10,000 行、128 列、200,000 セルです。出力と中間整形データの容量制限は 12 MiB で、大きな置換値は後の行削除前に拒否される場合があります。超過時は切り捨てずに処理を止めます。Worker、制限付きプレビュー、キャンセル、タイムアウトは負荷を抑えますが、厳密なブラウザーメモリ隔離ではありません。大きなファイルにはローカルのデータ処理ツールを使ってください。 区切り文字はカンマかタブを明示し、自動判定は行いません。UTF-8 ファイルは BOM 付きも使用できます。不正な引用符や UTF-8 はエラーになります。引用された区切り文字、二重引用符のエスケープ、複数行セル、空・重複ヘッダー、ヘッダーなし、不揃いな行に対応します。末尾の存在しないセルは欠落のままで、表示上の補白は新しい空値ではありません。ヘッダーは整形・改名・重複削除されません。
  • 空白除去は ECMAScript trim() を使い、選択した既存セルの両端にある空白を処理します。ノーブレークスペースや全角空白も対象ですが、内部の空白圧縮、全不可視文字の削除、Unicode 正規化、大文字・小文字変換は行いません。置換は空白除去後の文字列全体と完全一致し、該当セルにつき一度だけ実行します。CSV に null 型はありません。空文字、存在しないセル、null や N/A という文字列は別物です。欠落セルは埋めず、文字列トークンは明示的に指定した場合だけ置換します。 段階別件数は文字列が実際に変わった場合だけ増えます。すでに出力形式の有効な日付や同じ値への置換は変更に数えません。全処理を通じた重複のないセル数ではなく、同じセルに空白除去と置換が行われた後、その行が削除されることもあります。正味の変更セル数・行数は、行削除前の最終整形値と元の値を比較します。元の入力は別に保持され、リセットも再実行もそこから始まるため、変更は累積しません。一つの列選択を適用した後、別の選択の処理を積み重ねることはできません。これは決まったルールによる処理であり、編集履歴、多段階の元に戻す機能、あいまい一致、数値変換、大小文字同一視、自動修復ではありません。
  • 日付は YYYY-MM-DD、DD/MM/YYYY、MM/DD/YYYY、YYYY/MM/DD のみで、桁数が正確かつ 0001–9999 年の先発グレゴリオ暦で有効な日付が対象です。入力・出力形式を明示する必要があります。地域形式の推測、タイムスタンプ解析、タイムゾーン変換、01/02/2024 の自動解釈は行いません。選択した無効な非空セルは変更せず、件数と限られた例を表示します。空文字と欠落セルはスキップします。前後の空白を除去すると、空白付き日付が変換対象になることがあります。
  • 空行削除は値の整形後に行い、存在する全セルが空文字列のレコードだけを削除します。空白文字は、選択した空白除去で消えない限り空文字ではありません。空セルを非空値に置換すると、その行は残る場合があります。重複削除は前段処理後の指定位置の列を複合タプルとして比較し、001 と 1、欠落と空文字を区別します。先頭・末尾保持は該当行を残し、全件削除はキーが一意のグループだけを残します。残った行の元の順序は変わりません。 プレビューの検索・絞り込み・並べ替えは表示だけに適用され、出力は保持した全行を元の順序で含みます。
  • 数式対策付き CSV は数式に見えるフィールドにアポストロフィを付けるため、出力文字列が変化します。生の CSV は表計算ソフトで数式を実行する可能性があり、引用符で囲むだけでは防げません。保存して再度開くと対策が失われる場合もあります。先頭ゼロ付き ID も再解釈されることがあります。文字列を正確に受け渡すには JSON 配列が適し、末尾の欠落セルは null ではなく短い配列として保持します。JSON レポートは hasHeader、headers、columnCount、rows を含み、重複し得るヘッダー名をキーとするオブジェクトには変換しません。CSV/TSV のヘッダー出力は入力時の設定に従い、列順序は変わりません。元の引用符表現、符号化バイト、レコード改行はどちらの出力でも保持しません。入力をアップロード・永続保存する機能はありません。ダウンロード済みファイルはページの管理外です。

よくある質問

リセットで削除済みのデータを戻せますか?

現在の入力が残っている間は可能です。整形は元の解析行を上書きしません。リセットでルールと結果を解除し、元データを再び確認・処理できます。ルールを変えて再実行した場合も元データから始まります。クリアは入力と結果を削除し、復元可能な編集履歴は残しません。

01/02/2024 はどの日付になりますか?

入力 DD/MM/YYYY、出力 YYYY-MM-DD なら 2024-02-01 です。入力 MM/DD/YYYY なら 2024-01-02 です。ツールは日月順を代わりに判断しません。31/02/2024 のような存在しない日付は変更されず、無効件数に含まれます。

重複行の選択と順序はどう決まりますか?

キー列を位置で選び、前段の整形後に選択した全値を一つの複合キーとして比較します。先頭保持は最初、末尾保持は最後の行を残します。全件削除は繰り返されたキーのグループ全行を除きます。残った行はキーグループ順ではなく元の順序で出力されます。001 と 1、欠落と空文字は区別されます。

数式対策付き CSV はすべての表計算ソフトで安全ですか?

完全な保証はできません。既定のアポストロフィは数式解釈の危険を抑え、該当フィールドを意図的に変更します。生データ出力にはこの対策がなく、表計算ソフトが値を再解釈したり、保存後に対策を失ったりする場合もあります。信頼できないデータは確認し、文字列を正確に保つ必要があれば JSON を選んでください。

関連ツール