オフィス AI > エクセル AI > ExcelとVBA×ChatGPT APIでアンケート分析を自動化【完全ガイド】

ExcelとVBA×ChatGPT APIでアンケート分析を自動化【完全ガイド】

2025年6月16日

10分で読めます

Excel VBAとChatGPT APIを使えば、大量のアンケート分析が自動化できます。カテゴリ分類も感情分析もAIにお任せ!初心者でも分かる完全ガイドで、残業から解放されましょう。

生成AI
Excel
アンケート
ChatGPT
OpenAI API
VBA
業務効率化

もうアンケート集計で残業なんてしない!Excel×ChatGPTの魔法

「またアンケートの山か...今日も帰れそうにないな」

こんな経験、ありませんか?何百件ものアンケートを一つひとつ読んで、カテゴリ分けして、ポジティブかネガティブか判定して...気づいたら夜の10時なんてことも。

でも、もう大丈夫!Excel VBAとChatGPT APIを組み合わせれば、この苦行から解放されるんです。

ExcelとChatGPTで何ができる?実際の効果がすごい

ボタンをポチッと押すだけで、こんなことが起きます:

  1. ChatGPTがアンケート内容を理解して自動でカテゴリ分類
  2. ポジティブ・ネガティブの感情分析も一瞬で判定
  3. 結果がExcelに自動記入されて、すぐに集計可能

100件のアンケートなら約3分、1,000件でも30分程度で完了。手作業なら丸一日かかる作業が、コーヒーブレイクの間に終わっちゃいます。

ChatGPT APIの料金は?思ったより安い!

「AIって高いんでしょ?」って思いますよね。実は違うんです:

アンケート件数 料金の目安 例えると...
100件 約3円 うまい棒3分の1本
1,000件 約30円 缶コーヒー4分の1本
10,000件 約300円 コンビニ弁当の半額

※GPT-4o miniモデル使用時

残業代と比べたら、むしろ使わない方が損かも?

Excel VBAとOpenAI APIの準備(30分でできる!)

ステップ1:ChatGPT APIキーをゲットしよう

APIキーって何?簡単に言うと、ChatGPTを使うための「合言葉」みたいなものです。

  1. OpenAI Platformにアクセス
  2. 初めてなら「Sign up」で登録(メールアドレスだけでOK)
  3. ログインしたら右上の歯車マーク(設定)をクリック
  4. 左メニューの「API Keys」を選択
  5. 「Create new secret key」の緑ボタンをポチッ
  6. 「sk-」で始まる文字列が表示されるので、メモ帳にコピペ

超重要:このキーは絶対に他人に見せちゃダメ!あなたの財布の中身と同じです。

ステップ2:お金の準備(最低800円から)

  1. 設定画面の「Billing」をクリック
  2. 「Add to credit balance」でチャージ画面へ
  3. とりあえず5ドル(約800円)入れておけば十分
  4. クレカ情報を入力して完了!

ステップ3:Excelの開発環境を整える

開発タブを表示させよう

  1. Excelを開いて「ファイル」→「オプション」
  2. 「リボンのユーザー設定」をクリック
  3. 右側の「開発」にチェックを入れる
  4. OKを押せば、上のメニューに「開発」タブが出現!

マクロが使えるファイルで保存

  1. 「ファイル」→「名前を付けて保存」
  2. ファイルの種類を「Excelマクロ有効ブック(*.xlsm)」に変更
    • これ超大事!普通の.xlsxだと動きません
  3. 好きな名前で保存

VBAに必要な部品を追加(参照設定)

ちょっと専門的に聞こえますが、要は「道具を準備する」だけです。

  1. 「開発」タブから「Visual Basic」をクリック(Alt+F11でもOK)
  2. メニューの「ツール」→「参照設定」
  3. この2つを探してチェック:
    • Microsoft XML, v6.0(ネット通信用)
    • Microsoft Scripting Runtime(データ処理用)
  4. OKをクリック

JSON翻訳ツールを追加

ChatGPTの返事を理解するための道具です。

  1. VBA-JSONを開く
  2. 緑の「Code」→「Download ZIP」でダウンロード
  3. ZIPを解凍して「JsonConverter.bas」を見つける
  4. VBAエディタで右クリック→「ファイルのインポート」
  5. さっきの「JsonConverter.bas」を選択

左側に「JsonConverter」が出たら成功!

アンケート自動分析のExcelシート作成

アンケートデータシート(シート名:questionaire_sample)

こんな感じで作ります:

アンケートシートサンプル①
アンケートシートサンプル②

  • A列:番号
  • B列:アンケート回答(ここに実際の文章)
  • C列:空欄(AIがカテゴリを入れる)
  • D列:空欄(AIが感情を入れる)

カテゴリーマスタ(シート名:カテゴリー一覧)

分類したいカテゴリーを登録:

カテゴリー一覧シートサンプル

A列の2行目から、こんな感じで入力:

  • サービス品質
  • 価格
  • 配送
  • 商品の質
  • カスタマーサポート

VBAコードでChatGPT連携!コピペでOK

いよいよ本番!でも心配しないで、コピペするだけです。

  1. VBAエディタで「挿入」→「標準モジュール」
  2. 下のコードを全部コピー
  3. 重要"sk-から始まるAPIキー"を、さっき取得したあなたのキーに変更
Option Explicit

' OpenAI APIキー(ここを自分のキーに変更!)
Const OPENAI_API_KEY As String = "sk-から始まるAPIキー"

'--------------------------------------------
' メイン処理:全アンケートを自動分類
Public Sub ClassifyAllResponses()
    Dim ws        As Worksheet
    Dim lastRow   As Long
    Dim i         As Long
    Dim category  As String
    Dim sentiment As String
    
    ' アンケートシートを指定
    Set ws = ThisWorkbook.Worksheets("questionaire_sample")
    
    ' データの最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
    
    ' 2行目から最後まで処理
    For i = 2 To lastRow
        ' ChatGPTに分類してもらう
        GetCategoryAndSentiment ws.Cells(i, "B").Value, category, sentiment
        
        ' 結果を記入
        ws.Cells(i, "C").Value = category
        ws.Cells(i, "D").Value = sentiment
        
        ' APIに優しく1秒待つ
        Application.Wait Now + TimeValue("0:00:01")
    Next i
    
    ' 完了!
    MsgBox "ChatGPTによる分類が完了しました!" & vbNewLine & _
           "結果を確認してみてください。", vbInformation, "処理完了"
End Sub

'--------------------------------------------
' ChatGPT APIを呼び出す処理
Private Sub GetCategoryAndSentiment(ByVal text As String, _
                                    ByRef category As String, _
                                    ByRef sentiment As String)
    
    Dim wsCat      As Worksheet
    Dim lastCatRow As Long
    Dim i          As Long
    Dim catJson    As String
    
    Dim part1   As String, part2 As String, part3 As String
    Dim reqBody As String
    Dim http    As New MSXML2.XMLHTTP60
    Dim url     As String: url = "https://api.openai.com/v1/chat/completions"
    Dim resp    As Object, fnc As Object, args As Object
    Dim argsJson As String
    
    ' カテゴリー一覧を読み込み
    Set wsCat = ThisWorkbook.Worksheets("カテゴリー一覧")
    lastCatRow = wsCat.Cells(wsCat.Rows.Count, "A").End(xlUp).Row
    
    ' カテゴリーをAIが理解できる形に変換
    catJson = "["
    For i = 2 To lastCatRow
        catJson = catJson & """" & _
                  Replace(wsCat.Cells(i, "A").Value, """", "\""") & ""","
    Next i
    If Right(catJson, 1) = "," Then catJson = Left(catJson, Len(catJson) - 1)
    catJson = catJson & "]"
    
    ' ChatGPTへのお願い文を作成
    part1 = "{""model"":""gpt-4o-mini""," & _
            """messages"":[{""role"":""system"",""content"":""アンケート回答を「カテゴリー一覧」シートから1つ選び、ポジティブ/ネガティブを判定してください。""}," & _
                           "{""role"":""user"",""content"":""" & Replace(text, """", "\""") & """}],"
    
    part2 = """functions"":[{""name"":""select_category"",""description"":""カテゴリと感情(ポジ/ネガ)を返します。""," & _
            """parameters"":{""type"":""object"",""properties"":{""category"":{""type"":""string"",""enum"":" & catJson & "}," & _
                                                      """sentiment"":{""type"":""string"",""enum"":[""ポジティブ"",""ネガティブ""]}}," & _
            """required"":[""category"",""sentiment""]}}],"
    
    part3 = """function_call"":{""name"":""select_category""}}"
    
    reqBody = part1 & part2 & part3
    
    ' ChatGPTに聞く!
    With http
        .Open "POST", url, False
        .setRequestHeader "Content-Type", "application/json"
        .setRequestHeader "Authorization", "Bearer " & OPENAI_API_KEY
        .send reqBody
    End With
    
    ' 返事を解析
    Set resp = JsonConverter.ParseJson(http.responseText)
    Set fnc = resp("choices")(1)("message")("function_call")
    argsJson = fnc("arguments")
    Set args = JsonConverter.ParseJson(argsJson)
    
    ' 結果を返す
    category = args("category")
    sentiment = args("sentiment")
End Sub

実行してみよう!ドキドキの瞬間

最終チェック

  1. VBAエディタで「デバッグ」→「コンパイル」
  2. エラーが出なければ準備OK!

いざ実行!

  1. Excelに戻る
  2. 「開発」タブ→「マクロ」
  3. 「ClassifyAllResponses」を選んで「実行」

VBA実行画面

1件ずつ処理されていく様子を眺めながら、コーヒーでも飲んでリラックス♪

完成!自動分類の結果

アンケート自動カテゴライズ結果①
アンケート自動カテゴライズ結果②

すごい!ChatGPTがちゃんと内容を理解して、適切に分類してくれてます。

VBAとChatGPT APIの仕組み(知りたい人向け)

処理の流れ

  1. アンケートシートの2行目から順番に処理
  2. 各行でChatGPTに「これ何のカテゴリ?ポジティブ?ネガティブ?」と質問
  3. 返ってきた答えをC列とD列に記入
  4. 1秒待ってから次へ(APIに優しく)

なぜFunction Calling?

普通にChatGPTに聞くと「これはサービス品質についてのネガティブな意見ですね」みたいな文章で返ってきちゃいます。

でもFunction Callingを使えば、「サービス品質」「ネガティブ」とピンポイントで答えてくれるんです。Excel向きでしょ?

トラブルシューティング:エラーが出ても大丈夫

よくあるエラーと解決法

「コンパイルエラー」が出る

  • APIキーの前後に「"」があるか確認
  • 参照設定がちゃんとできてるか確認

「実行時エラー」が出る

  • ネットにつながってる?
  • APIキーは正しい?(sk-で始まってる?)
  • OpenAIの残高は足りてる?

処理が遅い・止まる

  • データが多いときは気長に待とう
  • 待機時間を2秒に増やしてみる

結果がおかしい

  • カテゴリー一覧に誤字がないか確認
  • 短すぎるアンケートは判定が難しいかも

さらなる改良アイデア

基本ができたら、こんな拡張も:

  • 複数カテゴリ対応:1つの回答に複数のカテゴリを付ける
  • 信頼度スコア:AIの自信度を数値化
  • エラー自動リトライ:ネットワークエラーに強くする
  • グラフ自動作成:分類結果を即座に可視化

まとめ:もう残業しなくていい!

お疲れさまでした!ここまでできたあなたは、もう立派なExcel×AI使いです。

最初は「難しそう...」って思ったかもしれませんが、やってみたら意外とできちゃったでしょ?これがプログラミングの楽しさなんです。

この仕組みを使えば、今まで丸一日かかってたアンケート分析が30分で終わります。浮いた時間で、もっとクリエイティブな仕事ができますね。

周りで同じように困ってる人がいたら、ぜひ教えてあげてください。「え、そんなことできるの!?」って驚かれること間違いなし!

困ったときは

  • エラーメッセージをそのままGoogleで検索
  • 「Excel VBA 入門」で基礎を学ぶ
  • OpenAI公式ドキュメントで最新情報をチェック

ChatGPTとExcelを味方につけて、どんどん楽をしていきましょう!

よくある質問(FAQ)

Q: MacのExcelでも使える?
A: 残念ながら、VBAの一部機能がMac版では制限されています。Windows版がおすすめです。

Q: ChatGPT以外のAIも使える?
A: もちろん!Claude APIやGemini APIでも同じような実装ができます。

Q: もっと高速化できる?
A: バッチ処理やAPI並列呼び出しで高速化可能ですが、まずは基本をマスターしましょう。

参考リンク

この記事が役に立ちましたか?

エクセル AI×AIの導入や業務効率化についてのご相談は、お気軽にビットライトまでお問い合わせください。

著者
守高 成悟
守高 成悟

代表取締役 CEO

大阪大学基礎工学部情報科学科卒業。大学時代はAIについて研究。10年以上のWebアプリ開発・データ分析経験を持つ。株式会社ビットライト代表として、生成AI・RPA・Excelなどを活用した業務効率化の専門コンサルティングを提供。

著者
守高 成悟
守高 成悟

代表取締役 CEO

大阪大学基礎工学部情報科学科卒業。大学時代はAIについて研究。10年以上のWebアプリ開発・データ分析経験を持つ。株式会社ビットライト代表として、生成AI・RPA・Excelなどを活用した業務効率化の専門コンサルティングを提供。