CSVやExcelは、見た目が整っていても中身が壊れていることがあります。加工後は「何件あるか」「キーは変わったか」「金額合計は同じか」を機械的に確認します。
この記事では、並べ替え・抽出・結合・置換・形式変換などの加工をした後に、データが意図せず変わっていないかを確かめる10項目と、それぞれをExcelで確認する方法を紹介します。目視でざっと眺めるだけでは不安なときのチェックリストとして使ってください。
先に結論
- 加工前のファイルは必ず別名で残し、加工後と並べて比較する。
- 「行数」「キー」「合計」は数字で突き合わせる。見た目で判断しない。
- 差分が出たら、理由を1行で説明できるか確認する。説明できない差分が1つでもあれば、取込や共有を止める。
準備:比較用のブックを作る
- 加工前のファイルを
元データ_20260928.csvのように別名で保存しておく。 - 新しいブックを作り、
加工前シートと加工後シートにそれぞれのデータを入れる(CSVの読み込み方は項目9を参照)。 - 3枚目に
比較シートを作り、以下の各項目の結果を並べる。
以下の数式例では、1行目が見出し、データが2行目から1001行目まで、A列が商品コードなどのキー、C列が日付、D列が金額と仮定しています。範囲は実際のデータに合わせて変えてください。
確認する10項目と確認方法
1. 行数が想定どおりか
加工前後のデータ件数を数えます(-1 は見出し行の分です)。
=COUNTA(加工前!A:A)-1
=COUNTA(加工後!A:A)-1
削除や抽出をしていないのに件数が変わっていれば、どこかで行が消えたか増えています。件数が変わる加工をした場合は、何件変わるはずかを先に書き出してから比べます。
2. キー(識別子)の欠落・追加がないか
件数が同じでも、中身が入れ替わっていることがあります。加工前シートの空き列に次の式を入れ、下へコピーします。
=COUNTIF(加工後!$A$2:$A$1001, A2)
結果が 0 の行は、加工後に消えたキーです。加工後シートにも、参照先を加工前シートに変えた同じ式を入れると、加工で新たに増えたキーを見つけられます。
なお、COUNTIFは「00123」と「123」を同じ値とみなすことがあります。先頭0を含むコードは項目9とあわせて確認してください。
3. 数値列の合計・最小・最大が一致するか
金額や数量の列について、加工前後で次の値を比べます。
=SUM(加工前!D2:D1001) と =SUM(加工後!D2:D1001)
=MIN(加工前!D2:D1001) と =MIN(加工後!D2:D1001)
=MAX(加工前!D2:D1001) と =MAX(加工後!D2:D1001)
合計が一致していても、最小・最大が変わっていれば、値の入れ替わりや桁ずれの可能性があります。小数を含む列では計算誤差で末尾がわずかにずれることがあるため、=ROUND(SUM(加工後!D2:D1001),2) のように桁をそろえて比べます。
4. 列名・列数・必須列がそろっているか
見出し行を比べます。比較シートに次の式を入れ、右へコピーします。
=EXACT(加工前!A1, 加工後!A1)
FALSE が出た列は、列名が変わったか、列の順番がずれています。列数は =COUNTA(加工前!1:1) と =COUNTA(加工後!1:1) で比べます。キー・金額・日付など必須の列に空欄がないかは、=COUNTBLANK(加工後!A2:A1001) で数えます。
5. 空白と0を区別できているか
「未入力」と「0円」は意味が違います。加工の途中で空白が0に置き換わったり、その逆が起きたりしていないかを数えます。
空白の数: =COUNTBLANK(加工前!D2:D1001)
0の数: =COUNTIF(加工前!D2:D1001, 0)
加工後シートでも同じ式で数え、どちらの件数も一致するか確認します。範囲は列全体ではなく、データがある行までに限定します(列全体を指定すると、データのない行まで空白として数えてしまいます)。
6. 日付として読めない値がないか
Excelでは、正しく読み込まれた日付は数値(シリアル値)として扱われます。日付列のうち、空欄ではないのに数値になっていない値を数えます。
=SUMPRODUCT((加工後!C2:C1001<>"")*NOT(ISNUMBER(加工後!C2:C1001)))
結果が0でなければ、「2026/13/01」のような存在しない日付や、文字列として取り込まれた日付が残っています。加工前より件数が増えていれば、加工で日付が壊れた可能性があります。
7. 重複件数が想定どおりか
各シートのキー列の隣に補助列を作り、次の式を入れて下へコピーします。
=COUNTIF($A$2:$A$1001, A2)
続けて =COUNTIF(B2:B1001, ">1") で、重複しているキーを持つ行の数を数えます。重複削除をしていないのに件数が変わった場合や、重複削除をしたのにまだ残っている場合は、加工手順を見直します。
8. 引用符・カンマ・セル内改行を含む行が崩れていないか
CSVでは、値の中にカンマや改行がある場合、その値を " で囲んで表します。この扱いがうまくいかないと、1行が2行に分かれたり、列が右へずれたりします。
- CSVをメモ帳などのテキストエディタで開き、
"を検索して、該当する行の区切り数が他の行と同じか確認する。 - Excel上では、セル内改行を含むセルの数を
=SUMPRODUCT(--ISNUMBER(SEARCH(CHAR(10), 加工後!E2:E1001)))で数え、加工前と比べる。 - 最終列の右隣(見出しのない列)に値が入っていないかを
=COUNTA(加工後!K:K)のように確認する。0でなければ列ずれが起きています。 - 項目1で行数が増えていた場合は、まずこの項目を疑う。
9. 先頭0や長いIDが保持されているか
CSVをダブルクリックしてExcelで開くと、「00123」が「123」になったり、桁数の多い番号が「1.23457E+15」のような指数表示になったり、15桁を超える部分が0に置き換わったりすることがあります。この状態で上書き保存すると元に戻せません。
- 確認:コード列の桁数を
=LEN(A2)で求め、加工前と加工後で桁数の最小・最大が同じか比べる。 - 予防:CSVは「データ」タブ →「テキストまたはCSVから」で読み込み、プレビュー画面で「データの変換」を選んでコード列のデータ型を「テキスト」に変えてから読み込む(画面の表記はExcelのバージョンによって異なる場合があります)。
10. 説明できない差分が残っていないか
1〜9の結果を比較シートに表としてまとめ、差分ごとに理由を書きます。
| 項目 | 加工前 | 加工後 | 差 | 理由 |
|---|---|---|---|---|
| 行数 | 1,200 | 1,198 | -2 | 重複2件を削除(想定どおり) |
| 金額合計 | 3,456,000 | 3,450,000 | -6,000 | 削除した重複2件の金額(3,000円×2) |
| 日付として読めない値 | 0 | 3 | +3 | 不明 |
「理由」を書けない行が1つでもあれば、取込や共有を止め、加工手順のどこで変わったかを調べます。上の例では、日付の3件が原因を特定するまで使えない状態です。
チェックリスト
- [ ] 行数が想定どおり
- [ ] キーの欠落・追加がない
- [ ] 数値列の合計・最小・最大が一致している
- [ ] 列名・列数・必須列がそろっている
- [ ] 空白と0の件数が変わっていない
- [ ] 日付として読めない値が増えていない
- [ ] 重複件数が想定どおり
- [ ] 引用符・カンマ・セル内改行を含む行が崩れていない
- [ ] 先頭0や長いIDが保持されている
- [ ] 説明できない差分がない
具体例
加工前後で行数は同じでも、商品コード00123が123へ変わっていれば検証失敗です。件数だけでは安全を確認できません。
よくある失敗
- CSVをExcelで開いて上書き保存する:先頭0や長いIDが失われ、保存形式によっては文字コードも変わります。中身を見るだけならテキストエディタで開くか、別名で保存します。
- 件数だけ見て安心する:行数が同じでも、キーの入れ替わりや値の書き換えは見つけられません。最低でも行数・キー・合計の3つはそろえて確認します。
- 加工前のファイルを残していない:比較の基準がなくなり、差分の理由を調べられなくなります。
このページでは扱わないこと
- CSVの加工手順そのもの(結合・集計・変換の方法)
- AIツールにCSV加工を任せる方法(ただし、AIで加工した結果の確認にも、この10項目はそのまま使えます)
関連ページ
- 無料ツール一覧
- Excel・CSVの記事一覧
確認日: 2026-09-28
