Claude Code × openpyxl で条件付き書式・カラーコーディングをExcelに自動適用する

Claude Code×openpyxlでExcelの条件付き書式を全シートに一括自動設定する方法を解説。カラースケール・データバー・アイコンセットに対応。閾値変更は設定ファイル1行修正だけ。コード付き。

この記事をシェア:
目次 クリックで開く

📅 2025年10月 | ⏱ 読了約8分 | 🏷 Excel・Claude Code・業務自動化

売上達成率・納期ステータス・異常値を色で自動ハイライト。openpyxl の条件付き書式 API を Claude Code が自動生成し、視覚的なExcelを即作成。

条件付き書式 KPIダッシュボードデモ
📊 Claude Code 生成デモ

条件付き書式 KPIダッシュボードデモ

↑ Claude Code が自動生成した実際の成果物サンプル。このクオリティが数分で完成します。

条件付き書式自動化の威力

📌 この記事で実現できること

  • 条件付き書式一括自動設定の完全自動化を実現するPythonスクリプトを5ステップで解説
  • 「複数シートへの手動設定・閾値変更の手間」という課題を根本から解消する
  • Claude Codeへの自然言語指示だけでスクリプトを生成できる
  • 月・週・日単位の定期実行で完全無人化を実現する方法も紹介

以下のステップを順番に実行することで、今日から業務自動化を始められます。コピーして使えるコードと、Claude Codeへの指示文をセットで解説します。

Excel の条件付き書式を手動で設定するのは時間がかかります。Claude Code + openpyxl を使えば、達成率の信号機カラー・売上ランキング上位のゴールド表示・期限切れの赤ハイライトを自然言語指示だけでコード生成→一括適用できます。

ステップ1:達成率で信号機カラーを自動適用

💬 Claude Code へのプロンプト達成率列(D列)に対して、100%以上=緑、80〜99%=黄、80%未満=赤の
背景色を自動適用するスクリプトを作成して
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秒に。

😫 Before ─ よくある課題

KPIシートを毎週手動でセルの色を塗り直し。色ルールが人によってバラバラで、基準が曖昧になっていた。

✅ After ─ Claude Code で解決

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("データバー適用完了")
✅ 実行結果

進捗率が視覚的なバーで表示。プロジェクト状況をひと目で把握可能。

📊 自動化で得られる効果
⏱ 作業時間(Before) 手動色付け:30分/週×50週=25時間/年
⚡ 自動化後(After) スクリプト実行:5秒
作業時間 年25時間→ゼロ
ルール統一 全員同じ基準で色分け
更新速度 データ更新のたびに即時反映

このシステムが解決する課題

データの傾向・異常を色分けで即視覚化。この自動化が特に効果的な場面と、解決できる課題を整理します。

❌ よくある課題

  • 条件付き書式の設定が複雑で、思い通りの色分けができず毎回試行錯誤している
  • 複数シートに同じ条件付き書式を設定するのが面倒で統一性がない
  • データ更新のたびに条件付き書式の範囲を手動で広げる作業が発生している
  • 閾値(しきい値)を変更するたびに条件付き書式の設定を開き直す必要がある

実務での活用シナリオ

業種・部門 活用方法と効果
KPI管理 目標達成率に応じて青(達成)・黄(要注意)・赤(未達)の3色で自動色分け。
在庫管理 安全在庫を下回った商品を赤くハイライト。補充が必要な品目を瞬時に把握。
品質管理 不良率が管理基準値を超えたロットを自動で赤字表示。問題の早期発見に貢献。
売上管理 前月比マイナスの担当者の行を自動でオレンジ色に変更。要フォローの担当者を即特定。
財務分析 損益計算書の赤字項目を自動でハイライト。決算書のレビュー効率が大幅に向上。

導入前後の効果比較

😫 Before ─ 従来の課題

条件付き書式の設定ダイアログで1ルールずつ設定していた。ルール数が増えると管理が複雑になり、どのルールがどの効果をもたらしているか把握できなくなっていた。

✅ After ─ Claude Code で解決

openpyxlのConditionalFormattingRuleで条件付き書式をコードで定義。閾値・色・対象範囲をすべてコードで管理するため、変更が1行で済む。複数シートへの一括適用も数秒で完了。

導入のポイントと注意事項

💡 スムーズに運用するためのコツ

  • openpyxlで条件付き書式を設定する際、セル範囲は ws.conditional_formatting.add() を範囲ごとに個別に呼び出す(カンマ区切りの範囲指定はエラーになる)
  • カラースケール(ColorScaleRule)は3点(最小・中央・最大)の色を指定するだけで、グラデーション表示が自動的に設定される
  • 条件付き書式のルールが多すぎると処理が遅くなるため、重要な指標(5〜10個程度)に絞って設定する
  • 閾値は別シートや設定ファイルで管理し、スクリプトがそこを読み込む設計にすることで、Excelを開かずに閾値変更が可能になる

よくある質問(FAQ)

Q. DataBarやIconSetも設定できますか?
A. はい。openpyxlのDataBarRule・IconSetRuleクラスで設定できます。Claude Codeに「進捗率をデータバーで表示して」と指示するだけでコードが生成されます。
Q. 数式ベースの条件付き書式はどう設定しますか?
A. FormulaRuleクラスを使い、formula=[“=A1>B1”]のような数式を条件として設定できます。他のセルとの比較条件も数式で表現できます。
Q. 条件付き書式を削除するには?
A. ws.conditional_formatting = ConditionalFormattingList()でシート全体の条件付き書式をリセットできます。特定ルールのみの削除は直接的なAPIがないため、全削除→再設定が確実です。

まとめ

✅ 達成率の信号機カラーを一括自動適用
✅ 数値ヒートマップでパターンを即可視化
✅ 期限切れ・上位N件を自動ハイライト
✅ すべて Claude Code への自然言語指示で生成

どんな現場で使われているか:活用シナリオ

対象者 導入前の課題 Claude Code導入後
売上管理担当 売上達成率の色分けを毎月手動でセルに適用している スクリプトで条件付き書式を自動適用して毎月同じ見た目を自動生成
品質管理担当 品質指標の異常値を手動で色付けして報告書を作成 しきい値ルールを設定するだけで異常値が自動で赤・黄・緑に色分け
データ分析担当 数十列・数千行のデータから外れ値を目視で探している 条件付き書式で外れ値を即座にハイライト・集計まで自動化

実装で押さえるべき重要ポイント

  • 1
    ColorScaleRuleで連続的な色グラデーション:openpyxlのColorScaleRuleで数値の大小を緑→黄→赤のグラデーションで表現できます。ヒートマップ的なデータ可視化に最も効果的です。
  • 2
    IconSetRuleでアイコン表示を自動設定:矢印アイコンや丸アイコンをセルに自動表示するIconSetRuleを使うと、数値を見なくてもパフォーマンスが一目でわかる表が作れます。
  • 3
    しきい値は設定ファイルで管理して柔軟に変更:「80%以上で緑」のしきい値をコードに直書きせず設定ファイルに外出しすることで、KPIの基準変更時にコードを修正せずに対応できます。

ビジネスインパクト

手動色付けゼロ
毎月の書式設定作業
即時可視化
異常値・外れ値の発見速度
100%再現性
毎月同じ書式を保証

この記事のまとめ

  • ✅ openpyxlでExcelの条件付き書式をプログラムから自動設定できる
  • ✅ カラースケール・アイコンセット・データバーを自動適用できる
  • ✅ 毎月の手動色付け作業をゼロにしてデータ分析に集中できる
  • ✅ ルールのしきい値を設定ファイルで管理して柔軟に変更できる


関連記事


制作実績サンプル

このクオリティの資料が、あなたの業務でも作れます

Aurant Technologies が実際に制作したコンサルティング資料(全82枚)のサンプルです。Claude Code × AI自動化により、従来の1/5のコスト・時間で同等品質を実現します。

タイトルスライド

タイトル・ダーク背景
3カラム分析

3カラム比較・分析
AI活用フロー

AI活用フロー図解
Before/After

Before/After比較
RFPテンプレート

構造化コンテンツ
全10枚を
見る

御社のテーマでこのレベルの資料を作成できます
制作費・納期・自動化プランは無料相談でご確認いただけます

📊 サンプル全10枚を見る →

Claude Codeで業務自動化を始めよう

プログラミング不要。自然言語で指示するだけで、あなたの業務に合ったスクリプトを自動生成します。

無料で試してみる →

AT
aurant technologies 編集

上場企業からスタートアップまで、数多くのデータ分析基盤構築・AI導入プロジェクトを主導。単なる技術提供にとどまらず、MA/CRM(Salesforce, Hubspot, kintone, LINE)導入によるマーケティング最適化やバックオフィス業務の自動化など、常に「事業数値(売上・利益)」に直結する改善実績多数。

この記事が役に立ったらシェア: