各支店や各月ごとに分かれてエクスポートされた、同じ列構成のCSVファイルを1つにまとめたいことがあります。「CSVを結合する」という言葉は、こうした同じ列を持つ複数のCSVを縦につなげて1つにする作業を指す場合と、別々の列を持つ2つの表をキー(IDなど)で紐づけて1行にする作業を指す場合の、どちらの意味でも使われます。

CSVファイル結合ツールが対応しているのは前者だけです。複数のファイルの行を上から順に積み重ねて1つのCSVにする処理で、Excelの「VLOOKUP」のように異なる表の列を突き合わせて1行にまとめる処理(後者)はできません。まず自分がやりたい作業がどちらなのかを確認してから読み進めてください。

今回の例:3支店の月次売上CSVを1つにまとめる

東京・大阪・名古屋の3支店から、それぞれdate,product,amountという同じ列構成の売上CSVが毎月届く場面を考えます。目的は、3つのファイルを1つのCSVにまとめ、全社の月次データとして一覧できるようにすることです。

事前に決めること今回の条件
対象ファイル東京・大阪・名古屋の売上CSV(各支店1ファイル)
列構成3ファイルともdate,product,amountで共通
ヘッダーの扱い1行目はヘッダーとして扱い、結果には1回だけ残す
完了条件3ファイルの行数の合計と、結合後の行数が一致する

列構成が同じであることを先に確認しておくと、結合後に「ヘッダーが一致しません」という警告が出た場合も、どこに差異があるかを素早く切り分けられます。

この方法が向いている場面

同じシステムやフォーマットから繰り返し出力される、列構成が共通のCSVを1つにまとめたい場合に向いています。

  • 複数の支店・拠点から届く、同じ列構成の売上・在庫CSVを全社分にまとめる
  • 月ごとに出力される同じ形式のCSVを、四半期・年間の1ファイルにまとめる
  • 複数回に分けてエクスポートした同じ対象のCSVを、1つのファイルに戻す
  • 同じアンケート・フォームから複数回に分けて出力されたCSVをまとめる

この方法が向いていない場面

CSVファイル結合ツールは、ファイルを縦に積み重ねるだけで、列同士を突き合わせて関連付ける処理は行いません。次のような作業には対応していません。

  • 顧客マスターと注文履歴を、顧客IDをキーにして1行にまとめる(キー結合・JOIN)
  • 列構成が異なる複数のCSVを、共通する列だけ抜き出して横に並べる
  • 片方のCSVの値をもう片方のCSVに追記する形で突き合わせる

これらはキーを指定して表同士を関連付ける「横結合(JOIN)」であり、行を積み重ねる今回のツールとは異なる処理です。2つの表をキー列で対応付けたい場合は、CSV・Excel 横結合ツールを利用してください。

ヘッダー(1行目)の扱い方

「各ファイルの先頭行をヘッダーとして扱う」をオンにすると(初期設定はオン)、最初のファイルのヘッダーだけを結果に残し、2つ目以降のファイルの1行目はヘッダーとして扱われて結果から除外されます。データ行だけが縦に積み重なります。

オフにすると、すべてのファイルの1行目もデータの一部としてそのまま結合されます。もともとヘッダーのないCSVを結合する場合や、1行目もデータとして扱いたい場合はオフにしてください。

ヘッダーが一致しない場合

「先頭行をヘッダーとして扱う」がオンの状態で、2つ目以降のファイルのヘッダー(1行目の文字列全体)が最初のファイルと異なる場合、自動では結合せず、どのファイルに差異があるかを警告として表示します。ここで[キャンセル]を選ぶと処理を中断でき、内容を確認したうえで[そのまま結合]を選ぶと、警告を無視して結合できます。

ヘッダーの比較は文字列としての完全一致で行われます。列の名前が同じでも並び順が違うと「一致していない」と判定されます。列の並びをそろえてから結合したい場合は、CSV 列並び替えで列順を統一してから、あらためて結合してください。

CSVファイルを結合する手順

  1. 結合したいCSVファイルを選択またはドロップします。 複数ファイルをまとめて選べます。
  2. 結合順を確認します。 一覧に表示された順序で結合されるため、上下ボタンで並び替えます。
  3. 「先頭行をヘッダーとして扱う」の設定を確認します。 今回の例のようにヘッダー付きCSVをまとめる場合はオンのままにします。
  4. [CSVファイルを結合]を押します。 ヘッダーが一致しない場合は警告が表示されるので、内容を確認してから続行します。
  5. 結果を確認し、結合したCSVをダウンロードします。 ファイル数と合計行数が表示されるので、想定どおりか確認します。

今回の例なら、3支店のデータ行数の合計と、結合後に表示される合計行数が一致するかを確認します。件数がずれている場合は、いずれかのファイルのヘッダー行が余分にデータとして残っていないか、あるいは空行が混ざっていないかを確認してください。

文字コードの注意

結合できるのはUTF-8のCSVファイルのみです。Shift_JIS(Windows-31J)などUTF-8以外の文字コードのファイルを選択すると、「UTF-8として読み込めませんでした」というエラーになります。Shift_JISのCSVは、Shift_JIS → UTF-8で変換してから結合してください。

結合してもデータの中身は変わらないか

引用符で囲まれたフィールド、フィールド内のカンマや改行、二重引用符のエスケープにはそのまま対応しており、結合によってセルの値が書き換わることはありません。改行コードは最初のファイルの形式を踏襲し、いずれかのファイルにUTF-8のBOMが含まれる場合は結合後のCSVにもBOMが付きます。

結合処理はブラウザ内で完結し、選択したCSVファイルの内容はKantanToolsのサーバーへ送信されません。

大きなCSV・多数のファイルを扱うときの注意

1ファイルあたりの上限は200MBです。結合するファイル数そのものに固定の上限はありませんが、ファイルサイズや件数が増えるほどブラウザが使用するメモリも増えるため、数十ファイル・大容量のCSVをまとめて扱う場合は処理に時間がかかったり、端末によっては失敗したりすることがあります。件数が多い場合は、いくつかのグループに分けて結合してから、最後にグループ同士をもう一度結合する方法も検討してください。

まとめ

同じ列構成の複数CSVを1つにまとめたい場合は、CSVファイル結合ツールで結合順とヘッダーの扱いを設定し、警告が出た場合は内容を確認してから結合します。列が異なる表同士をキーで関連付ける「結合(JOIN)」が必要な場合は、この方法では対応できないため、別の手段を検討してください。

結合前にヘッダーの並びをそろえたい場合はCSV 列並び替え、文字コードを変換したい場合はShift_JIS → UTF-8もあわせて利用できます。