導入
経理システムや顧客管理SaaSへの取込用にCSVを書き出したら、ヘッダーが「大分類/小分類」の2段になっていてシステム側が認識できない、結合セルが分解されて2行目のヘッダーが歯抜けになる、列名が空文字で返ってくる、といった失敗を経験したことはありませんか。
これは出力作業の手順ミスではなく、見出し行が複数行・結合セルで設計されていることが原因です。本記事では、CSV出力に耐えるよう見出し行を1行に固定する手順をまとめます。
この記事で解決すること
| 項目 | 内容 |
|---|---|
| 解決する課題 | CSV出力時にヘッダーが崩れる |
| 主な原因 | 複数行見出しや結合セルを使っている |
| 解決方法 | CSV用の見出し行を1行に固定する |
| 対象業務 | 業務台帳・売上管理・案件管理 |
| 対象人数 | 2〜30人 |
| 難易度 | ★☆☆☆☆ |
| 作業時間 | 15分 |
| 用意するもの | 対象のExcelファイル/編集権限 |
| 効果 | CSV出力や取込が安定する |
| 向かないケース | 印刷専用の帳票(CSV出力しない表) |
CSVは1行目をヘッダー、2行目以降をデータとして読みます。Excel側で「見やすさ」のために増やした構造はそのまま壊れの原因になります。
なぜその管理表はうまくいかないのか
- 見出し行が「大分類/小分類」の2段になっている
- 結合セルで「上の大分類が下の3列にかかる」表現になっている
- ヘッダーセルに改行(Alt+Enter)が入っている
- ヘッダー行の上に「対象期間」「作成者」のメモ行がある
- 列名に半角カンマや改行が含まれてCSVが壊れる
担当者の出力作業が雑なのではなく、見出し行が「人の目に見やすい構造」と「CSVで扱える構造」の両方を兼ねていることが原因です。見直しは、CSV出力用のシートで見出し行を1行に整理するところから始めます。
完成イメージ
直す前 — 見出しが2段+結合セル:
| 売上情報 | 顧客情報 | 担当 | |||
|---|---|---|---|---|---|
| 月 | 金額 | 区分 | 顧客名 | 連絡先 | 担当者 |
| 2024-04 | 120,000 | 新規 | 山田商事 | 内線123 | 田中 |
CSV出力すると1行目が空欄や結合解除で歯抜けになり、システムが認識できない。
直した後 — 見出しを1行に固定:
| 計上月 | 金額 | 売上区分 | 顧客名 | 顧客連絡先 | 担当者 |
|---|---|---|---|---|---|
| 2024-04 | 120,000 | 新規 | 山田商事 | 内線123 | 田中 |
見出し行はA1〜F1の1行だけ。CSV出力時にそのまま列名として認識されます。
改善手順
ステップ1. 見出し行を1行に確定する
複数段になっている見出しを、意味が伝わるように1行に書き換えます。
操作: A1〜F1の見出しを直接修正する。元の「売上情報>月」「売上情報>金額」のような階層は、列名の中に含めて「計上月」「売上金額」「売上区分」のように展開する。
記入例:
| 旧見出し(2段) | 新見出し(1行) |
|---|---|
| 売上情報>月 | 計上月 |
| 売上情報>金額 | 売上金額 |
| 売上情報>区分 | 売上区分 |
| 顧客情報>顧客名 | 顧客名 |
| 顧客情報>連絡先 | 顧客連絡先 |
| 担当>担当者 | 担当者 |
✗悪い例: 「金額」「区分」のような短すぎる列名 → CSVの列構成だけ見ても意味が分からない ◎良い例: 「売上金額」「売上区分」のように元の階層を含めた列名にする
ステップ2. 結合セルをすべて解除する
CSVは結合という概念を持ちません。見出しでもデータ行でも、結合は全部解除します。
操作: 該当範囲を選択し、「ホーム」タブ→「セルを結合して中央揃え」をクリックして解除する。結合解除後、空欄になったセルには元の値を1つずつコピーする。
記入例:
| 解除前 | 解除後 |
|---|---|
| A1〜C1 結合「売上情報」 | A1「計上月」/B1「売上金額」/C1「売上区分」 |
| A3〜A5 結合「2024-04」 | A3「2024-04」/A4「2024-04」/A5「2024-04」(値を埋める) |
ステップ3. 見出し行より上のメモ行を別シートに退避する
ヘッダーより上に「対象期間」「作成者」「最終更新日」などのメモが置かれている場合、CSV出力時にそれらが1行目として認識されてしまいます。
操作: メモ行を切り取り(Ctrl+X)、別シート「ファイル情報」にそのまま貼り付ける。元のシートはA1から見出し行が始まる状態にする。
記入例:
| シート | A1の内容 |
|---|---|
| 売上_入力(CSV出力対象) | 計上月 |
| ファイル情報(別シート) | 対象期間/作成者/最終更新日 |
ステップ4. 見出しセルの改行と半角カンマを除去する
ヘッダー内の改行や半角カンマは、CSV出力時にセル区切りと混同されて列がずれます。
操作: ヘッダー行を選択し、Ctrl+H(置換)で Ctrl+J(改行コード)を空白に置換、半角「,」を全角「、」に置換する。
記入例:
| 修正前 | 修正後 |
|---|---|
| 売上<改行>金額 | 売上金額 |
| 担当,確認者 | 担当、確認者 |
ステップ5. CSV出力用シートを別に作る
入力用シートはそのままにし、CSV出力専用のシートに参照式で値を渡します。
操作: シート「売上_CSV出力」を作り、A1〜F1に整えた見出し行を直接入力。A2に =IF(売上_入力!A2="","",売上_入力!A2) で参照する。CSV出力時はこのシートだけを「名前を付けて保存」→「CSV(コンマ区切り)」で書き出す。
実務での注意点
- 印刷専用の帳票(決算書、報告書など)はCSV出力しないので、見出しを1行にする必要はありません。
- 列名は英数字記号より日本語の方が読み手に伝わりやすい場合が多いですが、取込先システムが日本語列名を扱えるか事前に確認します。
- CSV出力時の文字コードは取込先に合わせます(多くはUTF-8 BOM付きかShift-JIS)。
- 見出し行を変更したら、取込先システムのフィールドマッピングも忘れず修正します。
- ヘッダー行は1行固定とし、データ行と区別が付くよう書式(背景色など)を分けます。
まとめ
CSV出力でヘッダーが崩れる原因は、見出し行が複数段や結合セルで設計されていることです。CSV出力用シートに見出し行を1行で固定し、メモ行を別シートへ退避すれば、取込先で列が認識されない事故を防げます。
次にやることは、対象のExcelで「見出しが何行になっているか」を確認し、2行以上ある場合は1行に統合することです。あわせて、CSV出力に支障を出す構造を整理したい場合はCSV出力に空行が混ざる原因を直す手順、結合セルが残っている場合は結合セルをやめて行ごとに値を持たせる手順も参考になります。

