ChatGPTでExcel関数を自動生成する手順|無料ツール中心で30分導入
「関数が覚えられない」「毎回ググってコピペしている」——その時間を、今日で終わらせましょう。本記事は、ChatGPTの力を使って“自然文からExcel関数を自動生成”し、スプレッドシートに自動で書き戻すところまでを30分で作り切る方法を書いてみました。無料プラン中心(APIのみ少額従量課金)で、初めての自動化でも迷わない順番で進めます。
1. この記事でできること
- 自然文で「やりたいこと(例:A列のメールからドメインだけ抜き出す)」と「使うセル参照(例:A2)」を書くだけで、ChatGPTがExcel関数を自動生成。
- 生成された関数がスプレッドシートの所定の列に自動で出力。あとはExcelにコピペするだけ。
- 無料の自動化サービス(Make)で常時稼働。あなたが行うのは行を1つ追加するだけ。
完成イメージ:スプレッドシートのA列に用件、B列にセル参照を書いて数秒待つと、C列にExcel関数が自動で入る。
2. 今回作る自動化の仕組みの全体像
仕組みはシンプルです。
- Googleスプレッドシートに「要件(自然文)」と「セル参照(例:A2、A2:A100など)」を入力。
- Make(無料のノーコード自動化)で新規行を監視。
- OpenAI(ChatGPT API)へ「Excel関数だけを返す」プロンプトで問い合わせ。
- 返ってきた関数文字列を同じ行の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スプレッドシートを用意
- 新規スプレッドシートを作成し、名前を「Excel関数ジェネレーター」とします。
- 1行目に見出しを作成:A列「要件(自然文)」、B列「セル参照・補足」、C列「出力(Excel関数)」、D列「メモ(任意)」。
Makeは列名で項目を識別します。先に見出しを決めると後の設定が迷いません。
4-2. OpenAI(API)の登録とAPIキー取得
- OpenAIのAPIページにサインアップ(既存のChatGPTアカウントでも可)。
- プロフィールのBillingからクレジットカードを登録。従量課金ですが、今回の用途は1リクエスト数百〜数千トークン程度で、安価なモデルなら1回あたり1円未満〜数円が目安です。心配なら「Usage limits」で上限を設定しましょう。
- API Keysの画面で「Create new secret key」をクリックし、キーを発行。メモ帳に控えておきます(後でMakeに貼り付け)。
MakeからChatGPTモデルを直接呼び出すためにAPIキーが必要です。
4-3. Make(make.com)のアカウント作成
- make.comで無料アカウントを作成。メール認証を完了します。
- ダッシュボードに入れたらOK。無料プランで本記事のシナリオは十分動きます。
行追加をトリガーにして、OpenAIへ問い合わせ→結果を書き戻す処理を自動化するためです。
5. 自動化ツールの設定
5-1. シナリオの骨組みを作る(Google Sheets → OpenAI → Google Sheets)
- Makeで新規Scenarioを作成します。最初のモジュールに「Google Sheets」を選び、「Watch new rows(新規行の監視)」を指定。行を1つ追加した瞬間に自動起動させるためです。
- Googleアカウントを接続し、先ほど作った「Excel関数ジェネレーター」を選択。シート名(通常は「シート1」)も選びます。行の監視モードは「追加時」を選択すると扱いやすいです。
- 次のモジュールに「OpenAI(Chat Completions)」を追加。モデルはコスパ重視で「GPT-4o mini」や同等の廉価モデルを推奨(精度重視なら上位モデル)。Temperature(創造性)は0.2〜0.3に下げて、安定した出力を狙います。
- 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. 結果を書き戻す設定
- 3つ目のモジュールに再度「Google Sheets」を追加し、「Update a row(行の更新)」を選びます。
- 1つ目のモジュールで取得したスプレッドシートとシート名・行IDを指定し、C列「出力(Excel関数)」にOpenAIの返答(choices[0].message.content 等)をマッピングします。
- シナリオを保存し、右上の「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関数」が自動で流れる最小構成が完成です。完璧な最適化は不要。まずは今日、動く形まで作り切って、明日以降は少しずつ精度や使い勝手を磨いていきましょう。