Python 業務自動化 | Excel業務自動化:Excel基本操作 - セル背景色変更

Python Python
スポンサーリンク

セル背景色変更は「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 が必須

タイトルとURLをコピーしました