ChatGPTでExcel関数を自動生成する手順|無料ツール中心で30分導入

「関数が覚えられない」「毎回ググってコピペしている」——その時間を、今日で終わらせましょう。本記事は、ChatGPTの力を使って“自然文からExcel関数を自動生成”し、スプレッドシートに自動で書き戻すところまでを30分で作り切る方法を書いてみました。無料プラン中心(APIのみ少額従量課金)で、初めての自動化でも迷わない順番で進めます。

1. この記事でできること

  • 自然文で「やりたいこと(例:A列のメールからドメインだけ抜き出す)」と「使うセル参照(例:A2)」を書くだけで、ChatGPTがExcel関数を自動生成。
  • 生成された関数がスプレッドシートの所定の列に自動で出力。あとはExcelにコピペするだけ。
  • 無料の自動化サービス(Make)で常時稼働。あなたが行うのは行を1つ追加するだけ。

完成イメージ:スプレッドシートのA列に用件、B列にセル参照を書いて数秒待つと、C列にExcel関数が自動で入る。

2. 今回作る自動化の仕組みの全体像

仕組みはシンプルです。

  1. Googleスプレッドシートに「要件(自然文)」と「セル参照(例:A2、A2:A100など)」を入力。
  2. Make(無料のノーコード自動化)で新規行を監視。
  3. OpenAI(ChatGPT API)へ「Excel関数だけを返す」プロンプトで問い合わせ。
  4. 返ってきた関数文字列を同じ行のC列に自動書き込み。

ChatGPTの通常チャットでも関数は作れますが、「毎回コピペ」だと人手が必要です。スプレッドシートを“指示箱”として使い、Makeが常時見張ることで、「書いたら勝手に関数が出てくる」状態を実現しているんです。

3. 事前に必要なアカウント・準備物

ツール 用途 料金 クレカ ここで取得・作成するもの
Googleアカウント スプレッドシート作成・保存 無料 不要 スプレッドシート1冊(後述の列構成で)
Make(make.com) 自動化シナリオの実行 無料プランでOK 不要 シナリオ1本(Google Sheets→OpenAI→Google Sheets)
OpenAI(API) ChatGPTモデルの呼び出し 従量課金(数円〜/日目安) 必要(利用上限の設定可) APIキー(後でMakeに貼り付け)
Excel(Microsoft 365等) 生成した関数を使う お持ちのライセンスで 特になし(最終的に貼り付けるだけ)

※スプレッドシートに入力する内容はOpenAIに送られます。個人情報などは入れないでください(不安ならダミーデータで検証しましょう)。

4. 必要なツール、アカウントの設定

4-1. Googleスプレッドシートを用意

  1. 新規スプレッドシートを作成し、名前を「Excel関数ジェネレーター」とします。
  2. 1行目に見出しを作成:A列「要件(自然文)」、B列「セル参照・補足」、C列「出力(Excel関数)」、D列「メモ(任意)」。

Makeは列名で項目を識別します。先に見出しを決めると後の設定が迷いません。

4-2. OpenAI(API)の登録とAPIキー取得

  1. OpenAIのAPIページにサインアップ(既存のChatGPTアカウントでも可)。
  2. プロフィールのBillingからクレジットカードを登録。従量課金ですが、今回の用途は1リクエスト数百〜数千トークン程度で、安価なモデルなら1回あたり1円未満〜数円が目安です。心配なら「Usage limits」で上限を設定しましょう。
  3. API Keysの画面で「Create new secret key」をクリックし、キーを発行。メモ帳に控えておきます(後でMakeに貼り付け)。

MakeからChatGPTモデルを直接呼び出すためにAPIキーが必要です。

4-3. Make(make.com)のアカウント作成

  1. make.comで無料アカウントを作成。メール認証を完了します。
  2. ダッシュボードに入れたらOK。無料プランで本記事のシナリオは十分動きます。

行追加をトリガーにして、OpenAIへ問い合わせ→結果を書き戻す処理を自動化するためです。

5. 自動化ツールの設定

5-1. シナリオの骨組みを作る(Google Sheets → OpenAI → Google Sheets)

  1. Makeで新規Scenarioを作成します。最初のモジュールに「Google Sheets」を選び、「Watch new rows(新規行の監視)」を指定。行を1つ追加した瞬間に自動起動させるためです。
  2. Googleアカウントを接続し、先ほど作った「Excel関数ジェネレーター」を選択。シート名(通常は「シート1」)も選びます。行の監視モードは「追加時」を選択すると扱いやすいです。
  3. 次のモジュールに「OpenAI(Chat Completions)」を追加。モデルはコスパ重視で「GPT-4o mini」や同等の廉価モデルを推奨(精度重視なら上位モデル)。Temperature(創造性)は0.2〜0.3に下げて、安定した出力を狙います。
  4. OpenAI接続を新規作成し、先ほどのAPIキーを貼り付けます。

5-2. プロンプト(指示文)を設定する

OpenAIモジュールで、次のように入力します。理由:余計な説明が混ざると困るので「関数だけ」を強制します。またExcelのロケール差(カンマ/セミコロン)を事前に指示してブレを防ぎます。

  • System(役割指示)例:
    「You are an assistant that writes Microsoft Excel formulas for Windows. Output only the final formula. Use English function names and a comma as the argument separator. Do not add code fences or explanations.」
  • User(ユーザー入力)例:
    「目的: {{A列: 要件(自然文)}} セル情報: {{B列: セル参照・補足}} 出力はExcelでそのまま使える1本の数式のみ。」

日本版Excelでセミコロン区切りが必要な場合は、Systemに「Use semicolons as the argument separator.」と書き換えてください。関数名の日本語化を求めたい場合も同様に明記します。

5-3. 結果を書き戻す設定

  1. 3つ目のモジュールに再度「Google Sheets」を追加し、「Update a row(行の更新)」を選びます。
  2. 1つ目のモジュールで取得したスプレッドシートとシート名・行IDを指定し、C列「出力(Excel関数)」にOpenAIの返答(choices[0].message.content 等)をマッピングします。
  3. シナリオを保存し、右上の「ON」に切り替えて有効化。スケジュールは最短(即時/1分間隔)にします。理由:入力→待つ→出る、を体感できる速さにするためです。

ここで失敗しても大丈夫。テスト実行でどこが空なのかを見れば、必ず原因は特定できます。

6. 動作確認(実際の質問例)

スプレッドシートの2行目から、次のように入力してみましょう。数秒〜1分でC列に関数が自動で入れば成功です。例はExcel英語関数・カンマ区切りを想定しています。

例1:メールからドメインを抜き出したい

  • A列(要件):A2のメールアドレスからドメインだけ取得
  • B列(セル参照・補足):A2
  • 期待されるC列(出力):=RIGHT(A2,LEN(A2)-FIND("@",A2))

@の位置を探して、その右側だけを取得します。

例2:氏名「姓 名」から姓だけ取りたい

  • A列:B2のフルネーム(名字と名前の間に半角スペース)から姓を取得
  • B列:B2
  • 期待されるC列:=LEFT(B2,SEARCH(" ",B2)-1)

姓名の区切りが全角スペースなら、PROMPTに「全角スペース」と補足しましょう。

例3:日付が入ったセルの月末日を返したい

  • A列:C2の日付の月末日を求める
  • B列:C2
  • 期待されるC列:=EOMONTH(C2,0)

例4:A列の金額が1万円以上なら「大」、それ以外は「小」

  • A列:A2の金額に応じて大/小を返す
  • B列:A2
  • 期待されるC列:=IF(A2>=10000,"大","小")

例5:D列の「完了」という文字を数える(範囲D2:D100)

  • A列:範囲内の「完了」の件数をカウント
  • B列:D2:D100
  • 期待されるC列:=COUNTIF(D2:D100,"完了")

うまく出ないときはA列の説明を1文で具体化し、B列に正しいセル参照を入れて再試行してください。ここで失敗しても大丈夫。説明の粒度を少し変えるだけで精度はグッと上がります。

7. うまく動かないときのチェックポイント

  • シナリオがOFFのまま:Make右上のトグルをONに。スケジュールが「手動」の場合は「最短」へ。
  • 列名の不一致:シートの見出し(A〜D列の名称)がMake設定と一致しているか確認。途中で名前を変えるとマッピングが外れます。
  • 関数が空白で返る:OpenAIの返答先フィールド(content)が正しくC列にマップされているか。テスト実行でレスポンス本文を目視。
  • 区切り文字の違い(カンマ/セミコロン):Systemプロンプトで明示。Excelの地域設定によってはセミコロンが必要です。
  • 関数名の言語(英語/日本語):同じくSystemに明記。「Use Japanese function names」等。ただし英語関数名の方がWeb情報は豊富で調べやすいです。
  • 複雑要件で誤回答:B列に具体的な範囲・前提(例:データはA2:A100、ヘッダーあり/なし)を書きましょう。温度(Temperature)を0.2程度に下げるのも有効。
  • APIエラー:OpenAIのAPIキー有効期限、課金設定、使用上限(Usage limits)を確認。403/429は権限・レート制限が多いです。
  • 費用が不安:OpenAIのUsageページで日次上限を数十円に設定。短い式生成なら十分です。

8. 次にできる改善アイデア

  • Excelへ自動反映:Makeの「Microsoft 365 Excel」モジュールで、Excel Onlineのファイルに直接書き戻す構成に拡張(Microsoft 365ビジネスアカウントが必要)。貼り付けすら自動化できます。
  • 説明も自動生成:2回目のOpenAI呼び出しで「関数の意味(30文字)」をD列に追記。チーム共有時の理解が早まります。
  • 定型プロンプトの強化:「配列数式を優先」「互換性重視で旧関数を使う」など方針をSystemに固定。現場ルールを埋め込めます。
  • モデルのコスト最適化:短い式は廉価モデル、複雑なロジックは高精度モデル、と入力内容で出し分け(Makeでルーター分岐)。
  • テンプレート化:このシート+シナリオを複製し、部署ごとにカスタマイズ。オンボーディングが一気にラクに。

ここまでで「自然文→Excel関数」が自動で流れる最小構成が完成です。完璧な最適化は不要。まずは今日、動く形まで作り切って、明日以降は少しずつ精度や使い勝手を磨いていきましょう。