openpyxl でセルや行を条件付き書式で強調表示する方法

目次

概要

売上レポートやタスク管理表などでは、閾値を超えた数値や完了済みの行だけを自動で色分けすると視認性が向上いたします。本記事では openpyxl の CellIsRuleFormulaRule を用い、セルや行に着色する手順を解説いたします。


1. 数値が 300 以上のセルを赤色で強調する

from openpyxl import load_workbook
from openpyxl.styles import PatternFill
from openpyxl.formatting.rule import CellIsRule

# ① ワークブックを読み込み
wb = load_workbook('sales_summary.xlsx')
ws = wb.active

# ② 塗りつぶし色を定義(赤系)
red_fill = PatternFill(fill_type='solid', fgColor='FF6666')

# ③ 条件付き書式を設定(300 以上)
rule = CellIsRule(
    operator='greaterThanOrEqual',   # >=
    formula=[300],
    fill=red_fill
)

# ④ 対象範囲に適用(列 H のデータ行)
ws.conditional_formatting.add('H4:H20', rule)

# ⑤ 保存
wb.save('sales_summary_highlight.xlsx')
ステップ説明
operatorgreaterThan, lessThan など幅広い比較演算子を選択できます。
formulaリスト形式で閾値や参照セルを指定します。複数条件の場合は別ルールを追加してください。
対象範囲'H4:H20' のように文字列でセル範囲を指定します。複数範囲もカンマ区切りで指定可能です。

2. ステータス列が「完了」の行全体をグレーで塗りつぶす

from openpyxl import load_workbook
from openpyxl.styles import PatternFill
from openpyxl.formatting.rule import FormulaRule

wb = load_workbook('task_board.xlsx')
ws = wb.active

# グレー塗りつぶし
gray_fill = PatternFill(fill_type='solid', fgColor='D9D9D9')

# D 列(ステータス)が "Done" の行を対象
rule = FormulaRule(
    formula=['$D4="Done"'],   # 行基準で 4 行目から判定
    fill=gray_fill
)

# タスク表の本体範囲(B4:G30)へ適用
ws.conditional_formatting.add('B4:G30', rule)

wb.save('task_board_highlight.xlsx')
ステップ説明
$D4="Done"先頭行の行番号(ここでは 4)を固定し、下行では自動的に行番号が変わります。
行全体を塗りつぶす対象を 'B4:G30' のように行全体の列範囲に設定すると、判定列以外も着色されます。

よく使う演算子一覧(CellIsRule

operator 値意味
greaterThanより大きい (>)
greaterThanOrEqual以上 (>=)
lessThanより小さい (<)
lessThanOrEqual以下 (<=)
equal等しい (=)
notEqual等しくない (<>)
between範囲内(下限・上限を指定)
notBetween範囲外

まとめ

複数ルールを重ねることで、売上の閾値やタスク進捗などを視覚的に区別でき、レポートや管理表の可読性が向上いたします。

PatternFill で色を定義し、CellIsRuleFormulaRule に渡すだけでセル・行を自動強調できます。

数値判定は CellIsRule、文字列や複合条件は FormulaRule と使い分けると柔軟に対応できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次