導入
案件管理表に「窓口担当」を入れていたら、複数人で対応する案件が出てきて「担当1」「担当2」「担当3」と列を増やした。今は3名分で足りているが、新規案件で4人目が出てきて「担当4」を作るたびに既存数式が壊れる。担当者別の件数集計を出そうとしても3列にバラバラに入っているので、SUMIFを3回書く必要がある――こんな場面はありませんか。
これは設計が悪いのではなく、可変件数を列で表現してしまっていることが原因です。本記事では、担当1〜担当N の列を「行」に展開し、件数が増えても構造が崩れない管理表に整える手順をまとめます。
この記事で解決すること
| 項目 | 内容 |
|---|---|
| 解決する課題 | 担当1・担当2・担当3のような列が増える |
| 主な原因 | 複数値を列で増やして表現している |
| 解決方法 | 担当や明細を別行または別表で管理する |
| 対象業務 | 案件管理・契約管理・対応履歴 |
| 対象人数 | 3〜30人 |
| 難易度 | ★☆☆☆☆ |
| 作業時間 | 30分 |
| 用意するもの | 対象のExcelファイル/編集権限 |
| 効果 | 件数が増えても構造が崩れにくい |
| 向かないケース | 最大件数が固定の小規模表 |
可変件数(担当人数、明細件数、対応回数など)は「行」で増やすのが基本です。列で増やすと構造拡張のたびに数式と書式を直す必要が出てしまいます。
なぜその管理表はうまくいかないのか
- 「担当1」「担当2」「担当3」のように、複数値を列で表現している
- 新しいケースが出るたびに列が増え、数式やフィルタが追いつかない
- 担当別の件数集計をSUMIFで3回書かないと出せない
- 担当2が空欄の行と、担当3が空欄の行で意味が混ざっている
- 「担当1だけに値あり」と「担当1〜3に値あり」が区別できず、未対応案件の判別が難しい
担当者の入力が悪いのではなく、可変件数を列で表現する構造そのものが拡張に向いていないことが原因です。見直しは、繰り返し列を行に展開する設計に変えるところから始めます。
完成イメージ
直す前 — 担当N列を増やしている:
| 案件ID | 顧客名 | 担当1 | 担当2 | 担当3 |
|---|---|---|---|---|
| 240401 | 山田商事 | 田中 | 鈴木 | (空) |
| 240402 | 鈴木物産 | 佐藤 | 田中 | 佐藤 |
| 240403 | 山本工業 | 鈴木 | (空) | (空) |
担当別件数を出すのにSUMIFを3列に対して3回かける必要がある。
直した後 — 担当を行に展開(別表で管理):
シート「案件」(1案件1行)
| 案件ID | 顧客名 |
|---|---|
| 240401 | 山田商事 |
| 240402 | 鈴木物産 |
| 240403 | 山本工業 |
シート「案件担当」(1案件×1担当)
| 案件ID | 担当者ID | 役割 |
|---|---|---|
| 240401 | U-001 | 主担当(田中) |
| 240401 | U-002 | 副担当(鈴木) |
| 240402 | U-003 | 主担当(佐藤) |
| 240402 | U-001 | 副担当(田中) |
| 240402 | U-003 | 確認者(佐藤) |
| 240403 | U-002 | 主担当(鈴木) |
担当別件数は1つのSUMIF(または案件担当シートのピボット)で集計できます。担当が10人に増えても列構造は変わりません。
改善手順
ステップ1. 繰り返している列を洗い出す
「担当1」「担当2」「担当3」のような繰り返し列が、どこにいくつあるかを把握します。
操作: 別シート「繰り返し列棚卸し」を作り、A列に列名、B列に最大件数、C列に空欄の頻度を記入する。
記入例:
| 列名 | 最大件数 | 空欄頻度 |
|---|---|---|
| 担当1〜担当3 | 3 | 担当3が空欄8割 |
| 商品1〜商品5 | 5 | 商品3以降が空欄6割 |
| 連絡先1〜連絡先3 | 3 | 連絡先2以降が空欄7割 |
空欄頻度が高い列ほど、行展開の効果が大きいです。
ステップ2. 別行または別表に切り出す
繰り返し列を別表に展開します。1案件×N担当のような関係を「案件担当」シートで管理します。
操作: シート「案件担当」を新規作成→列構成を「案件ID/担当者ID/役割」とする。既存の案件シートから「担当1〜担当3」を1列ずつ取り出し、新シートに行展開する。少量なら手作業、件数が多ければPower Queryの「列のピボット解除」で自動化する。
記入例:
| 元行 | 展開後 |
|---|---|
| 240401/田中/鈴木/空 | 240401-田中、240401-鈴木 の2行 |
| 240402/佐藤/田中/佐藤 | 240402-佐藤(主)、240402-田中(副)、240402-佐藤(確認) の3行 |
✗悪い例: 担当1〜3列を残したまま「案件担当」表も作る → 二重管理 ◎良い例: 担当N列は削除し、案件担当シートに完全移行
ステップ3. 共通のIDでつなぐ
新しい「案件担当」シートと元の「案件」シートを、案件IDで関連付けます。
操作: 案件担当シートのA列を「案件ID」とし、案件シートと同じID形式で揃える。集計時はピボットで「案件ID」をキーに2つの表を結びつける。
記入例:
| 案件シート | 案件担当シート |
|---|---|
| 案件ID 240401 | 案件ID 240401(複数行) |
ステップ4. 表示用シートで横に並べる
旧来の「1案件1行・担当を横並び」が見たい場面では、表示用シートを別途作ります。
操作: 表示用シートのA列に案件ID、B〜D列に「主担当」「副担当」「確認者」を =INDEX(案件担当!担当者列, MATCH(...)) で引く。担当者役割マスタを使って固定3列まで表示できる。
記入例:
| 案件ID | 主担当 | 副担当 | 確認者 |
|---|---|---|---|
| 240401 | 田中 | 鈴木 | — |
| 240402 | 佐藤 | 田中 | 佐藤 |
ステップ5. 集計の動作確認をする
担当別件数を新しい構造で集計し、旧構造の値と一致するか確かめます。
操作: 案件担当シートでピボットテーブルを作り、行に「担当者ID」、値に「案件ID」のカウントをドロップ。各担当者の件数が出る。旧表で手計算した件数と一致すれば成功。
実務での注意点
- 最大件数が固定で小規模な表(必ず2人対応の表、必ず3商品セットの表など)には行展開の手間が見合いません。
- 行展開すると行数が増えて見た目が長くなります。「人の見やすさ」より「機能の正しさ」を優先する意図を運用側と共有します。
- 案件担当シートの主担当・副担当の役割は、「役割マスタ」で固定値にします。自由入力にすると、また表記ゆれが戻ります。
- ピボットで担当別件数を出す時は、担当者IDではなく担当者名で表示するために、マスタ参照の列を1つ用意します。
- 旧来の「担当1〜担当N」列を削除する前に、必ずバックアップシートを残します。Power Queryの逆向き処理で復元可能ですが、念のため。
まとめ
担当1・担当2と列が増える原因は、可変件数を列で表現する構造そのものです。担当を行に展開した別表に切り出し、案件IDで結びつければ、担当人数が増えても表構造を変えずに対応できます。
次にやることは、対象ファイルで「同じ名前+番号」の列(担当1〜N、商品1〜N など)を数えることです。3列以上見つかれば行展開の効果が大きくなります。あわせて、1行1データに整える基本は1行1データに整える手順、1セルから列に分ける場合は1セルから列に分ける手順も参考になります。

