목록으로
📊 AIとビジネス - Excel

GPTでExcel数式を自動生成 - AIによるExcel自動化の第一歩

複雑な数式作成の悩み解決!ChatGPTに欲しい機能を説明すればすぐ使える数式を作ってくれます。

簡単な数式生成依頼

Excel関数を知ることと実際に数式を作ることは別の問題です。IF、AND、ORを組み合わせたり、VLOOKUPにIFERRORをネストしたりすると、括弧も混乱するしエラーもよく出ますよね。

今はAIに「こうしてください」と言うだけでいいんです。複雑な数式もサクサク作ってくれます。まるで個人秘書がExcel作業を代わりにしてくれるように。

この記事では、AIに数式を作ってもらう方法を学びます。簡単な計算から複雑な条件式まで、どう依頼すれば正確な数式が得られるか、実践例と共に見ていきましょう。

1. 基本数式依頼パターン

数式を依頼する時、最も重要なのは「データがどこにあるか」正確に伝えることです。漠然と「計算して」と言っても、AIもどうすればいいか分かりません。でも「A列にこれ、B列にあれ」と具体的に言えば、すぐピッタリの数式を作ってくれます。

パターン1: データ位置の明示

最も基本的なパターンから始めましょう。データがどの列にあるかだけ明確に伝えれば、AIが正確な数式を作ってくれます。

"A列に製品名、B列に単価、C列に数量があります。
D列に総額を計算する数式を作ってください。"

AI生成数式:

=B2*C2

簡単でしょう?単価(B列) × 数量(C列)を掛けて総額を求める数式です。2行目から始まることまで自動で把握してB2、C2で作ってくれました。この数式をD2セルに入れて下にドラッグすれば、残りの行も自動計算されます。

パターン2: 条件を含む

"E列に割引率を適用するが、C列の数量が10個以上なら10%割引、
そうでなければ5%割引を適用してください。"

AI生成数式:

=D2*(1-IF(C2>=10, 0.1, 0.05))

パターン3: 複数条件の組み合わせ

"F列にランクを表示したいです。
- 売上100万円以上: VIP
- 50万円以上: 優秀
- その他: 一般"

AI生成数式:

=IF(D2>=1000000, "VIP", IF(D2>=500000, "優秀", "一般"))

2. 実務事例別数式生成

事例1: 給与明細書

依頼:

"給与計算シートを作っています。
- B列: 基本給
- C列: 食費手当 (10万円固定)
- D列: 交通費 (5万円固定)
- E列: 総支給額
- F列: 所得税 (総支給額の3.3%)
- G列: 手取り額

各列の数式を作ってください。"

AI生成数式:

// C列 (食費手当)
=100000

// D列 (交通費)
=50000

// E列 (総支給額)
=B2+C2+D2

// F列 (所得税)
=E2*0.033

// G列 (手取り額)
=E2-F2

事例2: 在庫管理

依頼:

"在庫アラートシステムを作りたいです。
- A列: 製品名
- B列: 現在在庫
- C列: 安全在庫
- D列: ステータス (不足/正常/充分)

在庫が安全在庫より少なければ'不足'、
安全在庫の2倍以上なら'充分'、
その間なら'正常'と表示してください。"

AI生成数式:

=IF(B2<C2, "不足", IF(B2>=C2*2, "充分", "正常"))

事例3: 勤怠管理

依頼:

"出退勤時間を計算したいです。
- B列: 出勤時刻 (09:00)
- C列: 退勤時刻 (18:30)
- D列: 勤務時間 (時間単位)
- E列: 超過勤務 (8時間超過分)
- F列: 超過手当 (時給15,000円)

数式を作ってください。"

AI生成数式:

// D列 (勤務時間)
=(C2-B2)*24

// E列 (超過勤務)
=MAX(0, D2-8)

// F列 (超過手当)
=E2*15000

3. 高度な数式依頼

VLOOKUP自動生成

依頼:

"A列の社員番号で'社員情報'シートのA:D範囲から
社員名を探してB列に表示したいです。
見つからなければ'未登録'を表示してください。"

AI生成数式:

=IFERROR(VLOOKUP(A2,社員情報!$A:$D,2,FALSE),"未登録")

INDEX-MATCH組み合わせ

依頼:

"VLOOKUPの代わりにもっと柔軟な方法で
'製品DB'シートから製品名(C列)で検索して
価格(B列)を取得したいです。"

AI生成数式:

=INDEX(製品DB!$B:$B, MATCH(A2,製品DB!$C:$C,0))

SUMIFS複数条件

依頼:

"売上データから
- 地域が'東京'で
- 日付が2025年3月で
- 製品が'A型'の
売上だけ合算したいです。"

AI生成数式:

=SUMIFS(売上!$E:$E,
        売上!$B:$B, "東京",
        売上!$C:$C, ">=2025-03-01",
        売上!$C:$C, "<=2025-03-31",
        売上!$D:$D, "A型")

4. テキスト処理数式

マイナンバーから生年月日抽出

依頼:

"A列のマイナンバー(123456-1234567)から
生年月日をYYYY-MM-DD形式で抽出してください。"

AI生成数式:

=DATE(
  IF(LEFT(A2,2)>25, 1900+LEFT(A2,2), 2000+LEFT(A2,2)),
  MID(A2,3,2),
  MID(A2,5,2)
)

メールアドレスからドメイン抽出

依頼:

"B列のメールアドレスから@以降のドメインだけ抽出してください。"

AI生成数式:

=RIGHT(B2, LEN(B2)-FIND("@",B2))

// または
=MID(B2, FIND("@",B2)+1, 100)

電話番号形式変換

依頼:

"C列の数字(09012345678)を090-1234-5678形式に変換してください。"

AI生成数式:

=LEFT(C2,3)&"-"&MID(C2,4,4)&"-"&RIGHT(C2,4)

5. 日付計算数式

勤続年数計算

依頼:

"入社日(A列)から今日までの勤続年数を計算し、
小数点第一位まで表示してください。"

AI生成数式:

=ROUND((TODAY()-A2)/365.25, 1)

// または正確に
=DATEDIF(A2, TODAY(), "Y")&"年 "&DATEDIF(A2, TODAY(), "YM")&"ヶ月"

プロジェクト進捗率

依頼:

"プロジェクト開始日(B列)、終了日(C列)を基準に
今日現在の進捗率(%)を計算してください。"

AI生成数式:

=ROUND((TODAY()-B2)/(C2-B2)*100, 0)&"%"

営業日計算

依頼:

"今日から20営業日後の日付を計算してください。
(週末除外)"

AI生成数式:

=WORKDAY(TODAY(), 20)

// 祝日も除外するなら
=WORKDAY(TODAY(), 20, 休日範囲)

6. 条件付き集計数式

複数シート合計

依頼:

"1月から12月まで各シートのD5セルの値を
すべて合算したいです。"

AI生成数式:

=SUM('1月:12月'!D5)

ユニーク値の個数

依頼:

"A列の重複を除いたユニークな値の個数を数えたいです。"

AI生成数式:

=SUMPRODUCT(1/COUNTIF(A2:A100,A2:A100))

// Microsoft 365
=COUNTA(UNIQUE(A2:A100))

条件付き平均

依頼:

"点数が60点以上の学生の平均を求めてください。"

AI生成数式:

=AVERAGEIF(B2:B50, ">=60")

7. 効果的な依頼方法

✅ 良い依頼

"社員データベースから
- A列: 社員番号
- B列: 名前
- C列: 部署
- D列: 給与

給与が300万円以上の社員数を数える数式を作ってください。"

❌ 悪い依頼

"社員データから何か計算して"

8. 数式最適化依頼

依頼:

"この数式をもっと簡単にできますか?
=IF(A2>100,IF(A2>200,IF(A2>300,"A","B"),"C"),"D")"

AI最適化数式:

=IFS(A2>300, "A", A2>200, "B", A2>100, "C", TRUE, "D")

// またはSWITCH使用
=SWITCH(TRUE,
  A2>300, "A",
  A2>200, "B",
  A2>100, "C",
  "D"
)

まとめ

AIを活用した数式生成のコツ:

  • ✅ データ構造を明確に説明
  • ✅ 欲しい結果を具体的に明示
  • ✅ 特殊な条件があればすべて列挙
  • ✅ 生成された数式をテストして検証

次の記事では実際の売上データを分析してサマリーレポートを作る方法を扱います。