目次
概要
売上レポートやタスク管理表などでは、閾値を超えた数値や完了済みの行だけを自動で色分けすると視認性が向上いたします。本記事では openpyxl の CellIsRule
と FormulaRule
を用い、セルや行に着色する手順を解説いたします。
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')
ステップ | 説明 |
---|---|
operator | greaterThan , 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
で色を定義し、CellIsRule
や FormulaRule
に渡すだけでセル・行を自動強調できます。
数値判定は CellIsRule
、文字列や複合条件は FormulaRule
と使い分けると柔軟に対応できます。