Excel シートに 入力規則 を設けると、ユーザーが誤った値を入力するリスクを大幅に減らせます。Python の openpyxl を利用すれば、ドロップダウンリストや数値範囲などをスクリプトから一括設定できます。本記事では「ステータス列」にドロップダウンリストを追加する例を中心に、代表的なバリデーション種別(whole
・decimal
・date
・textLength
・list
・time
・custom
)の概要をまとめます。
目次
動作環境
項目 | 内容 |
---|
Python | 3.9 以上 |
ライブラリ | openpyxl(pip install openpyxl ) |
入力ファイル例 | task_tracker.xlsx |
出力ファイル例 | task_tracker_validated.xlsx |
1. ドロップダウンリスト(list
)を列に設定する
from openpyxl import load_workbook
from openpyxl.worksheet.datavalidation import DataValidation
# ① ワークブックを読み込み
wb = load_workbook('task_tracker.xlsx')
ws = wb.active
# ② 入力規則(ドロップダウン)を定義
# 候補は「Open,InProcess,Closed」
dv_status = DataValidation(
type='list',
formula1='"Open,InProcess,Closed"',
allow_blank=False
)
# ③ 適用範囲を追加(E 列の 3 行目〜20 行目)
dv_status.add('E3:E20')
# ④ シートへ登録
ws.add_data_validation(dv_status)
# ⑤ 保存
wb.save('task_tracker_validated.xlsx')
解説
ステップ | 説明 |
---|
type='list' | ドロップダウンリスト形式を指定します。 |
formula1='"Open,InProcess,Closed"' | 候補値をカンマ区切りで記述します。セル参照や名前定義も利用可能です。 |
allow_blank=False | 空欄を拒否する場合に False を指定します。 |
2. 主なバリデーション種別と活用例
type 値 | 主な用途 | 設定例 |
---|
whole | 整数のみ許可 | DataValidation(type='whole', operator='between', formula1=1, formula2=100) |
decimal | 小数を含む数値 | 下限 0.0 以上:operator='greaterThanOrEqual', formula1=0 |
date | 日付入力に限定 | DataValidation(type='date', formula1='2025-01-01', formula2='2025-12-31') |
time | 時刻入力に限定 | 開始時刻〜終了時刻で制限可能 |
textLength | 文字数制限 | formula1=1, formula2=50 で 1〜50 文字 |
list | ドロップダウンリスト | 本記事の例 |
custom | 複雑な数式判定 | DataValidation(type='custom', formula1='=LEN(A1)=5') |
3. よくある質問
質問 | 回答 |
---|
複数列に同じルールを適用できますか。 | dv_status.add('E3:E20,F3:F20') のようにカンマ区切りで複数範囲を指定できます。 |
セル参照で候補を外部シートに置けますか。 | 可能です。例:formula1='Sheet2!$A$1:$A$10' と指定します。 |
入力規則を解除したい場合は。 | ws.data_validations.dataValidation = [] でシートの全バリデーションを削除できます。 |
まとめ
DataValidation
クラスを用いると、Excel の「データの入力規則」を Python から簡単に設定できます。
list
形式はドロップダウンを生成し、定型入力を強制したいときに有効です。
- 数値範囲や日付制限など、用途に合わせて
type
と operator
を使い分けることで、入力ミスを防止し、データ品質を高められます。