導入
売上管理表からCSVを出して経理システムに取り込むと、行数が合わずエラーが返ってくる。見た目の区切りとして月の境目に空白行を入れていたら、CSVではそれが「空のレコード」として読み取られてしまった、という経験はありませんか。
これは入力の手抜きではなく、「見やすさのための空白行」と「データ行」を同じシートで兼ねていることが原因です。本記事では、空白行を削除して区分列で月の区切りを表現する手順をまとめます。
この記事で解決すること
| 項目 | 内容 |
|---|---|
| 解決する課題 | CSVに不要な空行が混ざる |
| 主な原因 | 見た目の区切りを空白行で表現している |
| 解決方法 | 空白行を削除し、分類列で区切りを表す |
| 対象業務 | 売上管理・在庫管理・案件一覧 |
| 対象人数 | 2〜30人 |
| 難易度 | ★☆☆☆☆ |
| 作業時間 | 15分 |
| 用意するもの | 対象のExcelファイル/編集権限 |
| 効果 | CSV取込エラーを減らせる |
| 向かないケース | 人が眺めるだけの資料(印刷専用台帳など) |
CSVは「1行=1レコード」で読まれます。空行は空のレコードとしてエラーや欠損の原因になります。区切りは列のデータとして持つのが正解です。
なぜその管理表はうまくいかないのか
- 月の境目で空白行を1〜2行入れて見やすくしている
- 顧客が切り替わるところで空白行を入れている
- 小計行が空白行と挟まって混ざっている
- 空白行を入れた後にフィルタや並び替えが効かなくなっている
- 空白行を消すとExcel上の見た目が悪くなる、と運用側が抵抗する
担当者の入力が雑なのではなく、Excel上の見やすさとCSV化の都合が両立しない設計になっていることが原因です。見直しは、「空白行で表現していたもの」を「列の値」に置き換えるところから始めます。
完成イメージ
直す前 — 月の区切りを空白行で表現:
| 計上月 | 顧客名 | 金額 |
|---|---|---|
| 2024-04 | 山田商事 | 120,000 |
| 2024-04 | 鈴木物産 | 80,000 |
| (空白行) | ||
| 2024-05 | 山田商事 | 150,000 |
| 2024-05 | 鈴木物産 | 90,000 |
| (空白行) |
CSV出力すると空行が2行混ざり、取込でエラーになる。
直した後 — 区分列に値を入れて空行を消す:
| 計上月 | 顧客名 | 金額 | 月区分 |
|---|---|---|---|
| 2024-04 | 山田商事 | 120,000 | 2024-04 |
| 2024-04 | 鈴木物産 | 80,000 | 2024-04 |
| 2024-05 | 山田商事 | 150,000 | 2024-05 |
| 2024-05 | 鈴木物産 | 90,000 | 2024-05 |
「月区分」列で月の境目を表現するので空白行は不要。CSV取込でも行数が正しく一致します。
改善手順
ステップ1. 空白行で何を表現しているか洗い出す
まず、空白行が表現している意味(月の境目、顧客の切り替わり、小計、etc.)をすべて書き出します。
操作: 別シート「空白行棚卸し」を作り、A列に「行番号」、B列に「直前の値」、C列に「空白行の意味」を記入する。
記入例:
| 行番号 | 直前の値 | 空白行の意味 |
|---|---|---|
| 15 | 2024-04 | 4月と5月の境目 |
| 28 | 2024-05 小計 | 月小計の下の区切り |
| 50 | 山田商事 | 顧客切り替え |
ステップ2. 表現していた意味を列として追加する
空白行が表現していた区分を、新しい列の値として持たせます。
操作: 表の右端に「月区分」「顧客区分」「集計区分」などの列を追加する。値はその行が属する月や顧客の名前を入れる。
記入例:
| 計上月 | 顧客名 | 金額 | 月区分(新規列) |
|---|---|---|---|
| 2024-04 | 山田商事 | 120,000 | 2024-04 |
| 2024-04 | 鈴木物産 | 80,000 | 2024-04 |
| 2024-05 | 山田商事 | 150,000 | 2024-05 |
✗悪い例: 「計上月」と「月区分」が両方あって冗長 ◎良い例: 計上月=日付値、月区分=集計キーのテキスト値、と役割を分ける
ステップ3. 空白行をフィルタで一括選択して削除する
ステップ2で意味を列に移したら、空白行は削除します。
操作: 「A列でフィルタ→空白セルのみ表示」→該当行を選択→右クリック→「行の削除」。フィルタを解除して空白行が消えていることを確認する。
記入例:
| 操作 | 結果 |
|---|---|
| フィルタで空白行表示 | 5月の境目/6月の境目/顧客切り替えの3カ所 |
| 行削除 | 3行が消え、合計の行数が ◯◯ → ◯◯-3 |
ステップ4. 小計行を別シートに移す
小計を行内に挟んでいる場合、それも空行と同じくCSVで邪魔になります。
操作: 「売上_集計」シートを新規作成し、SUMIF関数で月別小計を計算する。=SUMIF(売上_入力!D:D,"2024-04",売上_入力!C:C) のように。入力シートからは小計行をすべて削除する。
記入例:
| 月区分 | 件数 | 合計金額 |
|---|---|---|
| 2024-04 | =COUNTIF(売上_入力!D:D,”2024-04″) | =SUMIF(売上_入力!D:D,”2024-04″,売上_入力!C:C) |
| 2024-05 | =COUNTIF(売上_入力!D:D,”2024-05″) | =SUMIF(売上_入力!D:D,”2024-05″,売上_入力!C:C) |
ステップ5. CSV出力前に空白行ゼロを確認する
最後にCSV出力対象シートの末尾までスクロールし、空白行が残っていないか確認します。
操作: Ctrl+End で最終行に移動し、想定行数と一致するかを確認する。一致しない場合は空白行が残っているサイン。フィルタで空白を再度表示して削除する。
実務での注意点
- 人が眺めるだけの資料(印刷専用台帳、報告書など)は空白行のままでも問題ないので、本記事の対象外です。
- 空白行を削除すると見た目が詰まって読みづらくなる、と運用側で抵抗が出ます。Excel側の見た目は条件付き書式で「月が変わったら背景色を変える」など、列ではなく書式で表現します。
- 空白行を削除した結果、フィルタや並び替えが正しく動くかをCSV出力前に確認します。
- 区分列を増やすときは、列名を「◯◯区分」のように後ろに「区分」と付けて入力データと役割を分けます。
- CSV取込先のシステムが「先頭の空白行を許容するか」を確認し、ヘッダー行とデータ行の間にも余分な行を入れません。
まとめ
CSVに空行が混ざる原因は、月や顧客の区切りを空白行で表現していることです。空白行を分類列の値に置き換え、小計は別シートに移せば、CSV出力時の行数不一致や取込エラーをほぼ防げます。
次にやることは、対象ファイルで「空白行がいくつあるか」をフィルタで数えることです。意味を持つ空白行があれば、置き換える列を1つ追加するところから始めてください。あわせて、CSV出力でヘッダーが崩れる場合はヘッダー行を1行に固定する手順、結合セルが残っている場合は結合セルをやめて行ごとに値を持たせる手順も参考になります。

