「複雑なSUMIFS条件をClaude Codeにチャットで説明したら一発で正確な数式を生成してくれた」
「SUMIFS関数の引数が毎回分からなくなる」という悩みをClaude Codeに話しかけたら、複雑な多条件集計式を日本語説明から一発で生成してくれた体験記。プロンプト実例6個とClaude Code生成コードを完全公開。
目次 クリックで開く
「引数の順番が毎回分からなくなる」「ワイルドカードの書き方が覚えられない」そんな悩みをClaude Codeに話しかけたら、多条件SUMIFSを日本語説明から一発生成してくれた体験記です。
Claude CodeがSUMIFS数式を自動生成し、openpyxlでExcelに書き込んだ実行結果
1. きっかけ:毎月のSUMIFS地獄から解放されたい
私は経営企画部に所属しており、毎月月次レポートをExcelで作成しています。データは売上明細シートにあり、「特定の月・特定の営業所・特定の商品カテゴリの売上合計」のような複数条件の集計が必要です。SUMIFSを使うのですが、引数の順番や条件の書き方が毎回分からなくなって、毎月1〜2時間をSUMIFS書き直しに費やしていました。
・引数の順番が「合計範囲, 条件範囲1, 条件1, …」で覚えられない
・日付条件の「>=」「<=」と&DATE()の組み合わせが毎回間違える
・ワイルドカード(*)の書き方を調べるのに毎回時間がかかる
・条件が5個以上になると数式が長すぎて手作業では管理できない
そこでClaude Codeを試してみました。Claude Codeのチャット画面に「こういう条件でSUMIFSを書きたい」と日本語で説明したら、正確な数式を一発で生成してくれました。以下、実際のやり取りを全部公開します。
2. Claude CodeにシンプルなSUMIFSを生成してもらった
まず基本的なSUMIFSからClaude Codeに依頼しました。私はExcelのシート構成を説明するだけで、数式の知識は一切不要です。
プロンプト例 1
シートの構成:
– A列: 注文番号
– B列: 注文日(日付形式)
– C列: 営業所名(テキスト)
– D列: 商品カテゴリ(テキスト)
– E列: 売上金額(数値)
欲しい数式:
「東京営業所」の売上合計をH2セルに入れたい
SUMIFS(合計範囲, 条件範囲1, 条件1) の形です。
E列(売上金額)を、C列(営業所名)が「東京営業所」の場合に合計します。
H2セルに貼り付けてください。
Claude Codeはシートの構成説明から正確なSUMIFSを生成してくれました。さらに「各引数が何を意味するか」の説明まで付けてくれました。
3. 複雑な多条件SUMIFSをClaude Codeに生成してもらった
基本が動いたので、実際に業務で必要な複雑な多条件SUMIFSをClaude Codeに依頼しました。
プロンプト例 2
条件:
1. 2026年4月1日から2026年4月30日の期間
2. 営業所が「東京」
3. 商品カテゴリが「電子部品」
4. 売上金額の合計
日付の条件はDATEまたはEDATE関数を使ってください。
引数の意味も説明してください。
B:B,“>=”&DATE(2026,4,1),
B:B,“<=”&DATE(2026,4,30),
C:C,“東京”,
D:D,“電子部品”
)
E:E: 合計するE列(売上金額)B:B,">="&DATE(2026,4,1): B列(注文日)が2026年4月1日以降B:B,"<="&DATE(2026,4,30): B列(注文日)が2026年4月30日以前C:C,"東京": C列(営業所名)が「東京」を含むD:D,"電子部品": D列(商品カテゴリ)が「電子部品」
私が毎回間違えていた「>=の後に&でDATE関数をつなぐ」という書き方を、Claude Codeが正確に生成してくれました。しかも各引数の意味まで説明してくれるので、「なぜそう書くのか」が理解できます。
プロンプト例 3
2026年4月という固定値ではなく、今月の1日から末日を自動で計算してほしいです。
B:B,“>=”&EOMONTH(TODAY(),-1)+1,
B:B,“<=”&EOMONTH(TODAY(),0),
C:C,“東京”,
D:D,“電子部品”
)
Claude Codeは「今月の1日〜末日」という要件を、EOMONTH(TODAY(),-1)+1(前月末の翌日=今月1日)とEOMONTH(TODAY(),0)(今月末日)という正確な数式に変換してくれました。このような応用も、Claude Codeなら自然言語で指示するだけです。
4. ワイルドカードSUMIFSもClaude Codeに頼んだ
ワイルドカード(*)を使った部分一致のSUMIFSは、私が特に苦手としていた書き方です。Claude Codeに依頼しました。
プロンプト例 4
どう書けばいいですか?
また、「東京」または「大阪」の両方の合計を出したい場合はどうすればいいですか?
部分一致(「電子部品」を含む):
B:B,“>=”&EOMONTH(TODAY(),-1)+1,
B:B,“<=”&EOMONTH(TODAY(),0),
D:D,“*電子部品*”
)
+
SUMIFS(E:E,C:C,“大阪”)
ワイルドカードは「*電子部品*」のように前後を*で囲むと「含む」になります。「電子部品*」にすると「電子部品で始まる」、「*電子部品」にすると「電子部品で終わる」になります。OR条件(複数の値のいずれか)はSUMIFSを複数足す方法が一般的です。SUMPRODUCT関数を使う方法もClaude Codeが生成できます。
「ワイルドカードの前後に*をつける」という基本ルールも、Claude Codeが丁寧に説明してくれました。OR条件の書き方も2つの方法をClaude Codeが提案してくれています。
5. Claude CodeにSUMIFSをPythonコードで自動書き込みしてもらった
毎月同じSUMIFS数式を複数のセルに書き込む作業も自動化したいと思い、Claude CodeにPythonコードの生成を依頼しました。
プロンプト例 5
Excelファイルの指定したセルに自動で書き込むコードを書いてください。
書き込む内容:
– H2セル: 東京営業所の今月売上
– H3セル: 大阪営業所の今月売上
– H4セル: 名古屋営業所の今月売上
– H5セル: H2+H3+H4の合計
ファイルは「売上レポート.xlsx」です。
import openpyxl
from pathlib import Path
def write_sumifs_formulas(excel_path: str = "売上レポート.xlsx"):
"""
月次レポートのSUMIFS数式を自動書き込みする(Claude Code生成)。
今月の日付範囲・営業所別集計をExcelに書き込む。
"""
wb = openpyxl.load_workbook(excel_path)
ws = wb.active
# Claude Codeが生成したSUMIFS数式(今月の日付を動的に計算)
# EOMONTH(TODAY(),-1)+1 = 今月1日
# EOMONTH(TODAY(),0) = 今月末日
def make_sumifs(office: str) -> str:
"""営業所名を指定して今月のSUMIFS数式を生成する"""
return (
f'=SUMIFS(E:E,'
f'B:B,">="&EOMONTH(TODAY(),-1)+1,'
f'B:B,"<="&EOMONTH(TODAY(),0),'
f'C:C,"{office}")'
)
# 各営業所のSUMIFS数式を書き込む
ws["H2"] = make_sumifs("東京")
ws["H3"] = make_sumifs("大阪")
ws["H4"] = make_sumifs("名古屋")
# 合計行(H2+H3+H4のSUM)
ws["H5"] = "=SUM(H2:H4)"
# ラベルも自動で書き込む(Claude Codeが自動追加)
ws["G2"] = "東京営業所"
ws["G3"] = "大阪営業所"
ws["G4"] = "名古屋営業所"
ws["G5"] = "合計"
wb.save(excel_path)
print(f"数式の書き込み完了: {excel_path}")
print(f" H2: 東京営業所 今月売上")
print(f" H3: 大阪営業所 今月売上")
print(f" H4: 名古屋営業所 今月売上")
print(f" H5: 合計(SUM)")
write_sumifs_formulas("売上レポート.xlsx") # ← ファイルパスを変更

数式の書き込み完了: 売上レポート.xlsx
H2: 東京営業所 今月売上
H3: 大阪営業所 今月売上
H4: 名古屋営業所 今月売上
H5: 合計(SUM)
・G列にラベル(「東京営業所」等)を自動書き込みするコード
・make_sumifs関数を作って営業所名を引数で指定できる設計
・日本語のprint()でどのセルに何を書いたか確認できるログ出力
これらは私がリクエストしていませんでした。Claude Codeが実用的な機能を自発的に追加してくれました。
6. Claude CodeにExcel数式一括生成バッチを作ってもらった
営業所が増えた場合や、月次レポートのフォーマットが変わった場合にも対応できるよう、Claude Codeに設定ファイル方式の一括生成バッチを作ってもらいました。
プロンプト例 6
設定ファイル(JSON)に営業所一覧とセルアドレスを書いて、
そこから自動でSUMIFS数式を生成するコードに拡張してください。
さらに、pandasを使って同じ集計をPythonで実行したときの
数値確認コードも追加してください(数式の動作確認用)。
import openpyxl
import pandas as pd
import json
from pathlib import Path
from datetime import datetime
from dateutil.relativedelta import relativedelta
# ========================================
# 設定ファイル(config.json)から読み込む
# config.json の例:
# {
# "offices": [
# {"name": "東京", "cell": "H2"},
# {"name": "大阪", "cell": "H3"},
# {"name": "名古屋", "cell": "H4"}
# ],
# "data_sheet": "売上明細",
# "report_sheet": "レポート",
# "columns": {"date": "B", "office": "C", "category": "D", "amount": "E"}
# }
# ========================================
def generate_sumifs_formulas(
excel_path: str,
config_path: str = "config.json",
verify_with_pandas: bool = True
):
"""
設定ファイルから一括でSUMIFS数式を生成・書き込み(Claude Code生成)。
pandasによる数値確認機能付き。
"""
# 設定読み込み
with open(config_path, encoding="utf-8") as f:
config = json.load(f)
offices = config["offices"]
cols = config["columns"]
# 今月の期間計算
now = datetime.now()
month_start = now.replace(day=1)
month_end = (month_start + relativedelta(months=1)) - relativedelta(days=1)
wb = openpyxl.load_workbook(excel_path)
report_ws = wb[config["report_sheet"]]
print(f"集計期間: {month_start.strftime('%Y/%m/%d')} ~ {month_end.strftime('%Y/%m/%d')}")
# 各営業所のSUMIFS数式を書き込む
for office_config in offices:
office_name = office_config["name"]
cell_addr = office_config["cell"]
label_col = "G"
label_row = cell_addr[1:]
# Claude Codeが生成したSUMIFS数式(動的日付条件付き)
formula = (
f'=SUMIFS({cols["amount"]}:{cols["amount"]},'
f'{cols["date"]}:{cols["date"]},'
f'">="&EOMONTH(TODAY(),-1)+1,'
f'{cols["date"]}:{cols["date"]},'
f'"<="&EOMONTH(TODAY(),0),'
f'{cols["office"]}:{cols["office"]},'
f'"{office_name}")'
)
report_ws[cell_addr] = formula
report_ws[f"{label_col}{label_row}"] = f"{office_name}営業所"
print(f" {cell_addr}: {office_name}営業所 SUMIFS書き込み完了")
# 合計行
last_cell_row = offices[-1]["cell"][1:]
first_cell = offices[0]["cell"]
last_cell = offices[-1]["cell"]
total_row = int(last_cell_row) + 1
report_ws[f"H{total_row}"] = f"=SUM({first_cell}:{last_cell})"
report_ws[f"G{total_row}"] = "全営業所合計"
wb.save(excel_path)
print("数式の書き込み完了")
# pandasによる数値確認(Claude Codeが自動追加した動作確認機能)
if verify_with_pandas:
print("\n--- pandas検証(数式の正しさを確認)---")
df = pd.read_excel(
excel_path,
sheet_name=config["data_sheet"]
)
df.columns = ["注文番号", "注文日", "営業所", "カテゴリ", "金額"]
df["注文日"] = pd.to_datetime(df["注文日"])
# 今月のデータでフィルタリング
mask = (
(df["注文日"] >= month_start) &
(df["注文日"] <= month_end)
)
df_this_month = df[mask]
for office_config in offices:
office_name = office_config["name"]
total = df_this_month[
df_this_month["営業所"] == office_name
]["金額"].sum()
print(f" {office_name}営業所: ¥{total:,.0f}")
generate_sumifs_formulas("売上レポート.xlsx")
H2: 東京営業所 SUMIFS書き込み完了
H3: 大阪営業所 SUMIFS書き込み完了
H4: 名古屋営業所 SUMIFS書き込み完了
数式の書き込み完了
— pandas検証(数式の正しさを確認)—
東京営業所: ¥2,840,000
大阪営業所: ¥1,920,000
名古屋営業所: ¥1,340,000
Claude Codeはpandasによる数値確認コードも自動で追加してくれました。「Excel数式で計算した値がExcelを開かなくても確認できる」というデバッグ機能です。これにより、数式が正しく動いているかをPython側からも検証できます。
関連記事
Claude Codeで業務自動化を始めませんか?
Aurant TechnologiesはClaude Code導入から自動化設計まで無料相談を承っています。