Excelデータ検証は「入力ミスを自動で防ぎ、正しいデータだけをExcelに入れられるようにする」ための最強スキル
MONO、あなたのように業務効率化を本気で考える人にとって、 Excelデータ検証(Data Validation)をPythonで自動設定できることは“品質向上×効率化”の両方を実現する最強の技術 です。
Excelのデータ検証は本来、手作業で 「入力規則 → 設定 → 範囲選択 → OK」 を繰り返す必要があります。
Pythonを使えば、 検証ルールの自動設定 → エラー防止 → 入力支援(プルダウン) まで一瞬で完了します。
初心者でも理解できるように、例題を交えて丁寧に解説します。
Excelデータ検証の基本構造(最重要ポイント)
データ検証は次の3つで構成される
- 入力制限(数値のみ、日付のみ、文字数制限など)
- リスト選択(プルダウン)
- エラーメッセージ表示(間違った入力を防ぐ)
Pythonでは openpyxl の DataValidation を使って設定します。
Excelのデータ検証(プルダウン)を自動設定する最小テンプレート
A列に「商品名」のプルダウンを設定する例
from openpyxl import Workbook
from openpyxl.worksheet.datavalidation import DataValidation
wb = Workbook()
ws = wb.active
ws["A1"].value = "商品名"
dv = DataValidation(type="list", formula1='"りんご,みかん,バナナ"', allow_blank=False)
ws.add_data_validation(dv)
dv.add("A2:A100")
wb.save("validation.xlsx")
Python深掘りポイント
type="list"がプルダウンの指定formula1='"りんご,みかん,バナナ"'のように カンマ区切りで選択肢を指定add("A2:A100")で検証範囲を指定- 手作業で設定するより圧倒的に速い
数値のみ入力可能にする(売上・数量などで必須)
B列に「数値のみ」を許可する例
from openpyxl.worksheet.datavalidation import DataValidation
dv = DataValidation(type="whole", operator="greaterThan", formula1="0")
ws.add_data_validation(dv)
dv.add("B2:B100")
Python深掘りポイント
type="whole"は整数のみoperator="greaterThan"で「0より大きい」- 売上・数量・在庫などの入力ミスを防げる
日付のみ入力可能にする(勤怠・日報で必須)
C列に「日付のみ」を許可する例
dv = DataValidation(type="date", operator="greaterThan", formula1="DATE(2020,1,1)")
ws.add_data_validation(dv)
dv.add("C2:C100")
Python深掘りポイント
type="date"で日付のみ- 勤怠・日報・スケジュール管理で必須
- 不正な文字列(例:AAA)が入らなくなる
文字数制限を設定する(名前・ID・コードで使う)
D列に「10文字以内」を設定する例
dv = DataValidation(type="textLength", operator="lessThanOrEqual", formula1="10")
ws.add_data_validation(dv)
dv.add("D2:D100")
Python深掘りポイント
- コード・ID・名前の入力ミス防止に最適
- 長すぎる文字列を自動でブロック
エラーメッセージを設定して入力ミスを防ぐ
プルダウン以外の値を入れたら警告を出す
dv.error = "選択肢以外の値は入力できません"
dv.errorTitle = "入力エラー"
Python深掘りポイント
- エラーメッセージを設定するとユーザーが迷わない
- Excelの「入力規則」画面と同じ機能をPythonで自動化できる
実務例①:商品マスタを使ってプルダウンを自動生成
商品マスタを別シートから読み込み → プルダウン化
products = ["りんご", "みかん", "バナナ", "ぶどう"]
formula = '"' + ",".join(products) + '"'
dv = DataValidation(type="list", formula1=formula)
ws.add_data_validation(dv)
dv.add("A2:A100")
Python深掘りポイント
- マスタデータを使うと選択肢の変更が簡単
- 大規模システムでよく使う方法
実務例②:売上入力シートに複数の検証を設定する
商品名(プルダウン)+数量(数値)+日付(日付型)
# 商品名
dv1 = DataValidation(type="list", formula1='"りんご,みかん,バナナ"')
ws.add_data_validation(dv1)
dv1.add("A2:A100")
# 数量
dv2 = DataValidation(type="whole", operator="greaterThan", formula1="0")
ws.add_data_validation(dv2)
dv2.add("B2:B100")
# 日付
dv3 = DataValidation(type="date")
ws.add_data_validation(dv3)
dv3.add("C2:C100")
Python深掘りポイント
- 入力ミスをほぼゼロにできる
- 売上入力シートの品質が劇的に向上する
実務例③:複数シートにデータ検証を自動設定する
全シートに同じ検証ルールを設定
for sheet in wb.worksheets:
dv = DataValidation(type="whole", operator="greaterThan", formula1="0")
sheet.add_data_validation(dv)
dv.add("B2:B100")
Python深掘りポイント
- 月次シート・週次シートなど大量のシートに一括設定
- 手作業では絶対にできない効率化
Excelデータ検証を業務で設計するときの視点
入力ミスを防ぐルールを明確にする
数値・日付・文字数・プルダウンなど。
マスタデータを使う
選択肢の変更が簡単になる。
エラーメッセージを設定する
ユーザーが迷わない。
openpyxl の DataValidation を使う
Excelの入力規則を完全自動化できる。

