導入
顧客リストをCSVで別システムに取り込もうとしたら、「氏名」列に「田中/鈴木/佐藤」と3名分が入っていてエラーで止まる。Excel上では「同じ会社の担当者をまとめて1行に」と入力していたが、CSVの取込先は1行1人を前提にしていた、という場面はありませんか。
これは入力者が雑なのではなく、見やすさのために1行に複数件の情報を詰め込んでいることが原因です。本記事では、1行1データの形に整理し、CSV取込や集計が安定する管理表に整える手順をまとめます。
この記事で解決すること
| 項目 | 内容 |
|---|---|
| 解決する課題 | 1行に複数件の情報が入り取込できない |
| 主な原因 | 見やすさ優先で複数データを同じ行に入れている |
| 解決方法 | 1行1データの形に整理する |
| 対象業務 | 顧客管理・案件管理・申請管理 |
| 対象人数 | 2〜30人 |
| 難易度 | ★☆☆☆☆ |
| 作業時間 | 20分 |
| 用意するもの | 対象のExcelファイル/編集権限 |
| 効果 | CSV取込や集計がしやすくなる |
| 向かないケース | 印刷用の一覧資料 |
CSVや他システムは「1行=1レコード」を前提にしています。「1顧客に担当者複数」のような構造は、1行1人で複数行に分けるのが基本です。
なぜその管理表はうまくいかないのか
- 「氏名」「連絡先」セルに複数人分を「/」「、」区切りで入れている
- 「商品」セルに複数商品をカンマ区切りで入れている
- 「期限」セルに「初回4/10、最終5/20」のように2つの日付を併記している
- 「ステータス」セルに「申請中/承認待ち」のように複数状態が並んでいる
- セル内改行(Alt+Enter)で複数行を1セルにまとめている
担当者の入力が雑なのではなく、Excelの「1セルに自由に書ける」性質が複数件入力を許容してしまうことが原因です。見直しは、複数件入っているセルを「複数行に分ける」か「複数列に分ける」かを決めるところから始めます。
完成イメージ
直す前 — 1行に複数件:
| 案件ID | 顧客名 | 担当者 | 商品 | 数量 |
|---|---|---|---|---|
| 240401 | 山田商事 | 田中/鈴木 | 商品A、商品B | 10、5 |
| 240402 | 鈴木物産 | 佐藤 | 商品C | 8 |
CSV取込時に「田中/鈴木」が1値として認識され、フィルタや件数集計も失敗する。
直した後 — 1行1データに分割:
| 案件ID | 枝番 | 顧客名 | 担当者 | 商品 | 数量 |
|---|---|---|---|---|---|
| 240401 | 1 | 山田商事 | 田中 | 商品A | 10 |
| 240401 | 2 | 山田商事 | 鈴木 | 商品B | 5 |
| 240402 | 1 | 鈴木物産 | 佐藤 | 商品C | 8 |
「案件ID+枝番」で1行を一意化し、CSV取込・件数集計・担当別の集計がすべて正しく動きます。
改善手順
ステップ1. 1セルに複数値が入っているセルを洗い出す
まず、どのセルに複数件入っているかを把握します。
操作: 別シート「複数値棚卸し」を作り、A列に列名、B列に区切り文字(「/」「、」「改行」など)、C列に最大件数を記入する。本体シートを開いて「/」をCtrl+F検索→1セルに何件まで入っているかを確認する。
記入例:
| 列名 | 区切り文字 | 最大件数 | 対応方針 |
|---|---|---|---|
| 担当者 | / | 3 | 行を分割 |
| 商品 | 、 | 4 | 行を分割 |
| 数量 | 、 | 4 | 商品と同じ単位で分割 |
| 期限 | 、 | 2 | 列を分割(初回/最終) |
ステップ2. 「行を分割するもの」と「列を分割するもの」を分ける
すべてを行分割すると行数が爆発します。判断基準は「件数が増減するか」です。
操作: ステップ1の表の右に「対応方針」列を足し、件数が増減する項目(担当者・商品など)は「行を分割」、固定2項目(初回/最終など)は「列を分割」と記入する。
記入例:
| 列名 | 対応方針 | 理由 |
|---|---|---|
| 担当者 | 行を分割 | 案件ごとに人数が違う |
| 商品 | 行を分割 | 案件ごとに商品数が違う |
| 期限 | 列を分割 | 初回/最終で固定 |
ステップ3. 案件IDと枝番で行を分ける
行分割する列について、1セル内の複数値を別々の行に展開します。
操作: 元の表をコピーして作業用シートを作る。複数値セルを区切り文字(「/」「、」)で分割し、案件ID+枝番で複数行に展開する。少数なら手作業、件数が多い場合はPower Query(「データ」→「データの取得と変換」→「テキスト/CSV」→「列の分割」)で自動化する。
記入例:
| 案件ID | 枝番 | 担当者 | 商品 | 数量 |
|---|---|---|---|---|
| 240401 | 1 | 田中 | 商品A | 10 |
| 240401 | 2 | 鈴木 | 商品B | 5 |
✗悪い例: 「田中/鈴木」を1セルに残し、別途「主担当」列を追加 → 集計時にどちらも見落とす ◎良い例: 1人1行に分け、案件IDで結びつける
ステップ4. 1セルに固定数の項目は列を分ける
「初回/最終」のように件数が固定の項目は、行ではなく列を分けます。
操作: 元の「期限」列をコピーし、右に「初回期限」「最終期限」の2列を追加する。「、」区切りで分割(「データ」→「区切り位置」)して2列に展開する。元の「期限」列は削除。
記入例:
| 期限(旧) | 初回期限 | 最終期限 |
|---|---|---|
| 4/10、5/20 | 2024-04-10 | 2024-05-20 |
ステップ5. 主キーで一意性を確認する
新しい表で「1行=1レコード」になっているかを確認します。
操作: 「案件ID+枝番」の組み合わせがすべての行で一意か、COUNTIFSで確認する。F2セルに =COUNTIFS(A:A,A2,B:B,B2) を入力し、全行で1になっていれば成功。2以上の行は重複の証拠。
記入例:
| 案件ID | 枝番 | 重複チェック |
|---|---|---|
| 240401 | 1 | 1(OK) |
| 240401 | 2 | 1(OK) |
| 240402 | 1 | 1(OK) |
実務での注意点
- 印刷用の一覧資料(紙で見るための表など)は1セル複数値のままで構いません。CSV出力や集計の対象外です。
- 行を分割すると行数が増え、Excel画面では一見冗長に見えます。「人間の見やすさ」より「データの扱いやすさ」を優先する目的を運用側と共有します。
- 行分割後は元の表との突合(件数・合計)を必ず確認します。分割漏れがあると集計値がズレます。
- 1セルに複数値の習慣を残したまま新規入力を続けると、また同じ問題が起きます。入力ルール(「1セルに1値、複数なら行を分ける」)を入力ルールシートに明文化します。
- Power Queryで自動化する場合は、元の表が更新されるたびに再実行する運用に切り替えます。手作業のままだと差分が出ます。
まとめ
1行に複数件入って取込できない原因は、1セルに複数値を詰め込む入力習慣にあります。行分割と列分割を使い分けて1行1レコードに整理すれば、CSV取込や集計が安定して動くようになります。
次にやることは、対象ファイルで「区切り文字(/、、)が入っている列」をフィルタで数えることです。1列でも該当があれば、対応方針(行分割か列分割か)を決めるところから始めてください。あわせて、CSV出力に空白行が混ざる場合は空白行を分類列に置き換える手順、結合セルが残っている場合は結合セルをやめて行ごとに値を持たせる手順も参考になります。

