導入
毎月CSV取込のスクリプトを動かしているが、ある日突然「対象列が見つかりません」とエラーで止まった。元データのExcelを開いてみると、「顧客名」列の見出しが「お客様」に書き換えられていた。誰かが「お客様」の方が丁寧だと思って善意で直したのが原因――こんな場面はありませんか。
これは個人の判断の問題ではなく、見出し行が誰でも編集できる状態になっていることが原因です。本記事では、見出し行をロックしてシート保護をかけ、列名の不用意な変更を物理的に防ぐ手順をまとめます。
この記事で解決すること
| 項目 | 内容 |
|---|---|
| 解決する課題 | 列名が変わって集計やCSVが壊れる |
| 主な原因 | 見出し行を誰でも編集できる |
| 解決方法 | 見出し行をロックして変更不可にする |
| 対象業務 | 業務台帳・CSV管理・案件管理 |
| 対象人数 | 2〜30人 |
| 難易度 | ★☆☆☆☆ |
| 作業時間 | 15分 |
| 用意するもの | 対象の管理表 |
| 効果 | 列名変更による事故を防げる |
| 向かないケース | 試作中の個人表 |
見出し行(通常は1行目)をロックしてシート保護をかけるだけで、列名の不正変更が止まり、関連する集計やCSV処理が安定します。
なぜその管理表はうまくいかないのか
- 見出し行が他のセルと同じく編集可能
- 誰かが見栄えや好みで列名を書き換えてしまう
- 列名変更が VLOOKUP や Power Query、CSV取込スクリプトに影響を与える
- 列名変更による事故が起きても、原因が「列名変更」だと気づきにくい
- 「列名は変えないで」が口頭ルールでしか伝わっていない
担当者の善意や好みではなく、見出し行を保護する仕組みがないことが原因です。見直しは、見出し行を範囲指定してロック設定するところから始めます。
完成イメージ
直す前 — 見出しが書き換えられる:
| A1: 顧客ID | B1: 顧客名 | C1: 担当 | D1: 売上 | | 001 | A社 | 鈴木 | 100万 |
誰かが「顧客ID→ID」「顧客名→お客様」「担当→担当者」と書き換える…
=VLOOKUP("顧客名", ...) → エラー: "顧客名" は見つかりません
Power Query → スキーマ違反エラー
CSV取込スクリプト → KeyError: '顧客名'
直した後 — 見出し行を保護:
見出し行(A1:D1)はロック+シート保護で編集不可。
| A1: 顧客ID(ロック) | B1: 顧客名(ロック) | C1: 担当(ロック) | D1: 売上(ロック) | | 001 | A社 | 鈴木 | 100万 | ← 入力可
誰がクリックしても「保護されています」と警告。
改善手順
ステップ1. 見出し行を範囲指定で選ぶ
シート内の見出し行を正確に把握します。
操作: 見出し行が複数行ある場合(タイトル行+列名行など)はすべて含めて選択する。
記入例:
| ケース | 見出し範囲 |
|---|---|
| 1行ヘッダ | A1:Z1(列名のみ) |
| 2行ヘッダ(タイトル+列名) | A1:Z2 |
| 3行ヘッダ(タイトル+分類+列名) | A1:Z3 |
| 凍結ペインを使っている場合 | 凍結対象範囲と同じ |
範囲を間違えると、データ行までロックされてしまう。最初に正確に範囲を確認する。
✗悪い例: A1:Z1だけロック → 上のタイトル行が抜けて編集可能 ◎良い例: タイトル行も含めて A1:Z3 をロック → 見出し領域全体が保護される
ステップ2. 見出し行のロックを確認する
Excelの初期状態では、全セルがロック対象。見出し行は通常ロック維持でOK。
操作: 見出し行を選択 → 右クリック → セルの書式設定 → 保護タブ → 「ロック」にチェックが入っていることを確認。
記入例:
| 確認手順 | 内容 |
|---|---|
| 1 | 見出し範囲を選択(A1:Z1 など) |
| 2 | 右クリック → セルの書式設定 |
| 3 | 保護タブ → 「ロック」にチェック確認 |
| 4 | 入っていなければチェックを入れる |
通常、新規シートでは全セルがロック対象なので、見出しもそのままでOK。
ステップ3. 入力セルのロックを外す
データ行(2行目以下)をロック対象から外します。
操作: データ行範囲を選択し、「セルの書式設定」→「保護」タブで「ロック」のチェックを外す。
記入例:
| 範囲 | ロック設定 | 理由 |
|---|---|---|
| A1:Z1(見出し行) | ロック維持 | 列名を守る |
| A2:Z1000(データ行) | ロックを外す | 入力者が編集できる |
| Z101(列合計など数式) | ロック維持 | 数式を守る |
見出し行と数式セル以外を、ロック解除しておく。
ステップ4. シート保護を設定する
ロック設定だけでは保護されません。シート保護を有効化します。
操作: 「校閲」タブ → 「シートの保護」 → パスワード設定 → 「OK」。
記入例:
| 設定項目 | 推奨設定 |
|---|---|
| パスワード | 設定する(管理者のみ保管) |
| ロックされたセルの選択 | チェック(クリック・コピーは可、編集は不可) |
| ロックされていないセルの選択 | チェック |
| セルの書式設定 | チェックなし(書式変更も防止) |
| 並べ替え | チェック(運用に合わせて) |
| オートフィルター | チェック |
| 列の幅変更 | チェック(見栄え調整可) |
| 行の高さ変更 | チェック |
シート保護が有効になると、見出し行は編集不可。一方、データ行は自由に編集できる状態が両立する。
ステップ5. ルールを表の中に書き残す
シート保護のルールをファイル内に明文化します。
操作: 対象ファイルの先頭シート「シート保護ルール」に、保護対象・パスワード保管者・解除方法を記載する。
記入例:
シート全体:
## 見出し行保護ルール
【保護対象】
- 全シートの見出し行(A1:Z1)
【保護理由】
- 列名が変わるとVLOOKUP、Power Query、CSV取込スクリプトが壊れる
- 列名は他システムと連携する基幹情報
【入力可セル】
- データ行(A2以降)すべて
- 列幅・行高の調整も可能
【列名変更が必要な場合】
1. 営業企画 鈴木(内線1234)へ依頼
2. 関連する集計式・スクリプト・CSV取込先を全部洗い出す
3. すべて同時に変更する計画を立てる
4. シート保護を一時解除して列名変更
5. 関連先も同時に更新
6. シート保護を再設定
【パスワード保管】
営業企画 鈴木(情報セキュリティ台帳に登録)
【最終更新】
2024-05-15(鈴木)
列名変更のような大きな影響のある操作は、必ず計画ベースで実施する。
実務での注意点
- 試作中の個人表ではこの保護は不要です。複数人で使う台帳や、他システム連携がある表に限定します。
- 見出し行を保護した後、Power QueryやVBA、外部スクリプトが既存の見出しを参照していることを必ず確認します。古い見出し名でハードコードされたままでは将来の変更時にまた壊れます。
- 列の挿入や削除は、シート保護下でも保護対象になる場合があります。「シートの保護」設定で「列の挿入」「列の削除」のチェックも管理します。
- 凍結ペインを使っている表では、凍結対象の範囲とロック対象の範囲を一致させると視覚的に分かりやすい。
- 列名は短く意味が明確であるほど良い。「お客様」「クライアント様」など丁寧表現はCSV連携時に問題になりやすい。最初の設計時に「ID」「名称」「金額」など機能的な命名にすると後で安定する。
まとめ
列名が変わって集計やCSVが壊れる原因は、見出し行が誰でも編集できる状態になっていることです。見出し行をロックし、データ行のロックを外し、シート保護をパスワード付きでかければ、列名の不正変更が物理的に止まり、関連する集計と外部連携が安定します。
次にやることは、自分の管理表で見出し行を選択して右クリック→セルの書式設定→保護タブを確認することです。シート保護が無効ならそれが原因。あわせて、数式セルの保護は数式セルをロックする手順、入力セルだけ開放は入力セルだけ開放する手順、集計シート保護は集計シートだけ保護する手順も参考になります。

