セル背景色変更は「Excelの視認性を高め、重要箇所を強調する」ための必須スキル
Excel業務自動化では、セルの背景色(塗りつぶし)を変更する処理が非常に多く登場します。
なぜなら、業務で扱うExcelは「見やすさ」「強調」「注意喚起」が重要だからです。
例えば次のような場面があります。
- ヘッダー行をグレーで塗りつぶしたい
- エラー行を赤色にしたい
- 完了した行を緑色にしたい
- テンプレートの特定セルを色付きで強調したい
Pythonの openpyxl を使えば、Excelの背景色を自由に変更できます。
初心者でも理解しやすいように、基本から実務テンプレートまで丁寧に解説します。
背景色を設定する基本(最も実務向け)
PatternFill を使って背景色を設定する
from openpyxl import load_workbook
from openpyxl.styles import PatternFill
wb = load_workbook("sample.xlsx")
ws = wb["Sheet1"]
fill = PatternFill(fill_type="solid", fgColor="FFFF00") # 黄色
ws["A1"].fill = fill
wb.save("sample.xlsx")
Python深掘りポイント
PatternFill(fill_type="solid")が背景色設定の基本fgColorに16進カラーコードを指定- Excelの塗りつぶしと同じ動作
- セル単位で色を変えられるため柔軟性が高い
範囲に背景色を一括適用する(ヘッダー行など)
A1〜C1 をグレーで塗りつぶす
fill = PatternFill(fill_type="solid", fgColor="DDDDDD")
for cell in ws["1:1"]: # 1行目
cell.fill = fill
Python深掘りポイント
- 行全体に色を付けるとヘッダーが見やすくなる
- 範囲指定(”1:1″ や “A1:C1″)で一括処理できる
- 帳票の品質が一気に上がる
条件付きで背景色を変更する(エラー行の強調)
「NG」のセルを赤色にする
fill = PatternFill(fill_type="solid", fgColor="FF9999") # 薄い赤
for row in ws.iter_rows():
for cell in row:
if cell.value == "NG":
cell.fill = fill
Python深掘りポイント
- 条件判定と組み合わせると「エラー強調」が簡単
- Excelの条件付き書式をPythonで再現できる
- データチェックの自動化に最適
数値条件で背景色を変更する(データ分析向け)
金額が 1000 以上のセルを緑色にする
fill = PatternFill(fill_type="solid", fgColor="CCFFCC")
for cell in ws["C"]: # C列
if isinstance(cell.value, (int, float)) and cell.value >= 1000:
cell.fill = fill
Python深掘りポイント
- 数値判定には
isinstance()を使う - データの可視化が簡単にできる
- pandas では書式設定ができないため openpyxl が必須
行全体の背景色を変更する(ステータス管理に便利)
ステータスが「完了」の行を緑色にする
fill = PatternFill(fill_type="solid", fgColor="CCFFCC")
for row in ws.iter_rows(min_row=2):
if row[3].value == "完了": # D列がステータス
for cell in row:
cell.fill = fill
Python深掘りポイント
- 行単位で色を付けると視認性が大幅に向上
- タスク管理・進捗管理でよく使う
例題①:ヘッダー行をグレーで塗りつぶす
シナリオ
A1〜D1 をヘッダーとして強調したい。
from openpyxl.styles import PatternFill
fill = PatternFill(fill_type="solid", fgColor="CCCCCC")
for cell in ws["1:1"]:
cell.fill = fill
Python深掘りポイント
- ヘッダー装飾は帳票の基本
- 背景色を付けるだけで見やすさが劇的に向上
例題②:「エラー」を含む行を赤色で強調する
シナリオ
ログシートでエラー行を目立たせたい。
fill = PatternFill(fill_type="solid", fgColor="FFCCCC")
for row in ws.iter_rows():
for cell in row:
if cell.value and "エラー" in str(cell.value):
for c in row:
c.fill = fill
Python深掘りポイント
- 部分一致検索と背景色変更の組み合わせ
- エラー行の可視化に最適
例題③:テンプレートの重要セルを黄色で強調する
シナリオ
入力必須セルを目立たせたい。
fill = PatternFill(fill_type="solid", fgColor="FFFF99")
important_cells = ["B2", "B3", "B4"]
for cell in important_cells:
ws[cell].fill = fill
Python深掘りポイント
- テンプレートの「入力必須」セルを強調できる
- 業務ミス防止に効果的
pathlib を使った読みやすい背景色変更コード
Pathオブジェクトで直感的に書ける
from pathlib import Path
from openpyxl import load_workbook
from openpyxl.styles import PatternFill
path = Path("sample.xlsx")
wb = load_workbook(path)
ws = wb.active
ws["A1"].fill = PatternFill(fill_type="solid", fgColor="FFFF00")
wb.save(path)
Pythonメリット
- パス結合が
/で直感的 - 大規模プロジェクトでも保守性が高い
セル背景色変更を業務で設計するときの視点
- PatternFill が背景色設定の中心
- 範囲に一括適用すると効率が爆上がり
- 条件付き色付けでデータチェックが自動化できる
- 行単位の色付けは進捗管理・エラー管理に最適
- pandas では書式設定ができないため openpyxl が必須
