
条件付き書式自動化の威力
- 条件付き書式一括自動設定の完全自動化を実現するPythonスクリプトを5ステップで解説
- 「複数シートへの手動設定・閾値変更の手間」という課題を根本から解消する
- Claude Codeへの自然言語指示だけでスクリプトを生成できる
- 月・週・日単位の定期実行で完全無人化を実現する方法も紹介
以下のステップを順番に実行することで、今日から業務自動化を始められます。コピーして使えるコードと、Claude Codeへの指示文をセットで解説します。
Excel の条件付き書式を手動で設定するのは時間がかかります。Claude Code + openpyxl を使えば、達成率の信号機カラー・売上ランキング上位のゴールド表示・期限切れの赤ハイライトを自然言語指示だけでコード生成→一括適用できます。
ステップ1:達成率で信号機カラーを自動適用
背景色を自動適用するスクリプトを作成して
import openpyxl
from openpyxl.styles import PatternFill
GREEN = PatternFill("solid", fgColor="C6EFCE")
YELLOW = PatternFill("solid", fgColor="FFEB9C")
RED = PatternFill("solid", fgColor="FFC7CE")
wb = openpyxl.load_workbook("売上実績.xlsx")
ws = wb.active
for row in ws.iter_rows(min_row=2, min_col=4, max_col=4): # D列
cell = row[0]
if cell.value is None:
continue
rate = float(cell.value)
if rate >= 1.0:
cell.fill = GREEN
elif rate >= 0.8:
cell.fill = YELLOW
else:
cell.fill = RED
wb.save("売上実績_カラー.xlsx")
print("信号機カラー適用完了")
500行のデータに信号機カラーを一括適用。手動設定(40分)がスクリプト実行3秒に。
KPIシートを毎週手動でセルの色を塗り直し。色ルールが人によってバラバラで、基準が曖昧になっていた。
openpyxlで条件付き書式を自動適用。信号機・ヒートマップ・カラースケールを統一ルールで瞬時にセット。
ステップ2:ヒートマップで数値の濃淡を可視化
import openpyxl
from openpyxl.styles import PatternFill
wb = openpyxl.load_workbook("月別売上.xlsx")
ws = wb.active
# 数値範囲を取得してヒートマップ化
values = []
for row in ws.iter_rows(min_row=2, min_col=2):
for cell in row:
if isinstance(cell.value, (int, float)):
values.append(cell.value)
min_val, max_val = min(values), max(values)
for row in ws.iter_rows(min_row=2, min_col=2):
for cell in row:
if isinstance(cell.value, (int, float)):
ratio = (cell.value - min_val) / (max_val - min_val) if max_val != min_val else 0
# 白(FFFFFF)→濃緑(006400)のグラデーション
g = int(100 + 100 * (1 - ratio))
r = int(255 * (1 - ratio))
color = f"{r:02X}{g:02X}{int(64*ratio):02X}"
cell.fill = PatternFill("solid", fgColor=color)
wb.save("月別売上_ヒートマップ.xlsx")
print("ヒートマップ適用完了")
月×部門の売上マトリクスをヒートマップ化。売上の濃淡が一目で把握可能に。
ステップ3:期限切れ行を自動ハイライト
import openpyxl
from openpyxl.styles import PatternFill, Font
from datetime import date
RED_BG = PatternFill("solid", fgColor="FFE0E0")
BOLD_RED = Font(bold=True, color="CC0000")
TODAY = date.today()
wb = openpyxl.load_workbook("タスク管理.xlsx")
ws = wb.active
overdue = 0
for row in ws.iter_rows(min_row=2):
deadline_cell = row[3] # D列:期限
if not deadline_cell.value:
continue
if isinstance(deadline_cell.value, date) and deadline_cell.value < TODAY:
for cell in row:
cell.fill = RED_BG
deadline_cell.font = BOLD_RED
overdue += 1
ws["G1"] = f"期限切れ: {overdue}件"
wb.save("タスク管理_ハイライト.xlsx")
print(f"期限切れ {overdue}件をハイライト")
期限切れタスクが赤背景で即可視化。見落とし防止と優先対応が実現。
ステップ4:上位N件をゴールド表示
import openpyxl
from openpyxl.styles import PatternFill, Font
GOLD = PatternFill("solid", fgColor="FFD700")
BOLD = Font(bold=True)
TOP_N = 5
wb = openpyxl.load_workbook("売上ランキング.xlsx")
ws = wb.active
# 売上列(B列)の値を取得してソート
sales_rows = [(row[1].value, row) for row in ws.iter_rows(min_row=2)
if isinstance(row[1].value, (int, float))]
sales_rows.sort(key=lambda x: x[0], reverse=True)
for i, (_, row) in enumerate(sales_rows[:TOP_N]):
for cell in row:
cell.fill = GOLD
cell.font = BOLD
wb.save("売上ランキング_TOP5.xlsx")
print(f"上位{TOP_N}件をゴールド表示")
上位5件が自動でゴールド表示。ランキング確認の視認性が大幅向上。
ステップ5:データバーで進捗を可視化
import openpyxl
from openpyxl.styles import PatternFill
wb = openpyxl.load_workbook("進捗管理.xlsx")
ws = wb.active
BAR_COLOR = "4472C4" # 青
for row in ws.iter_rows(min_row=2):
rate_cell = row[2] # C列:進捗率
if not isinstance(rate_cell.value, (int, float)):
continue
rate = min(max(float(rate_cell.value), 0), 1)
# 擬似データバー:隣のセルに■を率に応じて埋める
bar_cell = row[3] # D列
blocks = round(rate * 20)
bar_cell.value = "■" * blocks + "□" * (20 - blocks) + f" {rate*100:.0f}%"
bar_cell.font = openpyxl.styles.Font(color=BAR_COLOR)
wb.save("進捗管理_バー.xlsx")
print("データバー適用完了")
進捗率が視覚的なバーで表示。プロジェクト状況をひと目で把握可能。
このシステムが解決する課題
データの傾向・異常を色分けで即視覚化。この自動化が特に効果的な場面と、解決できる課題を整理します。
- 条件付き書式の設定が複雑で、思い通りの色分けができず毎回試行錯誤している
- 複数シートに同じ条件付き書式を設定するのが面倒で統一性がない
- データ更新のたびに条件付き書式の範囲を手動で広げる作業が発生している
- 閾値(しきい値)を変更するたびに条件付き書式の設定を開き直す必要がある
実務での活用シナリオ
導入前後の効果比較
条件付き書式の設定ダイアログで1ルールずつ設定していた。ルール数が増えると管理が複雑になり、どのルールがどの効果をもたらしているか把握できなくなっていた。
openpyxlのConditionalFormattingRuleで条件付き書式をコードで定義。閾値・色・対象範囲をすべてコードで管理するため、変更が1行で済む。複数シートへの一括適用も数秒で完了。
導入のポイントと注意事項
- openpyxlで条件付き書式を設定する際、セル範囲は ws.conditional_formatting.add() を範囲ごとに個別に呼び出す(カンマ区切りの範囲指定はエラーになる)
- カラースケール(ColorScaleRule)は3点(最小・中央・最大)の色を指定するだけで、グラデーション表示が自動的に設定される
- 条件付き書式のルールが多すぎると処理が遅くなるため、重要な指標(5〜10個程度)に絞って設定する
- 閾値は別シートや設定ファイルで管理し、スクリプトがそこを読み込む設計にすることで、Excelを開かずに閾値変更が可能になる
よくある質問(FAQ)
まとめ
✅ 達成率の信号機カラーを一括自動適用
✅ 数値ヒートマップでパターンを即可視化
✅ 期限切れ・上位N件を自動ハイライト
✅ すべて Claude Code への自然言語指示で生成
どんな現場で使われているか:活用シナリオ
実装で押さえるべき重要ポイント
- 1
ColorScaleRuleで連続的な色グラデーション:openpyxlのColorScaleRuleで数値の大小を緑→黄→赤のグラデーションで表現できます。ヒートマップ的なデータ可視化に最も効果的です。
- 2
IconSetRuleでアイコン表示を自動設定:矢印アイコンや丸アイコンをセルに自動表示するIconSetRuleを使うと、数値を見なくてもパフォーマンスが一目でわかる表が作れます。
- 3
しきい値は設定ファイルで管理して柔軟に変更:「80%以上で緑」のしきい値をコードに直書きせず設定ファイルに外出しすることで、KPIの基準変更時にコードを修正せずに対応できます。
ビジネスインパクト
この記事のまとめ
- ✅ openpyxlでExcelの条件付き書式をプログラムから自動設定できる
- ✅ カラースケール・アイコンセット・データバーを自動適用できる
- ✅ 毎月の手動色付け作業をゼロにしてデータ分析に集中できる
- ✅ ルールのしきい値を設定ファイルで管理して柔軟に変更できる
関連記事