2025年6月16日
•約10分で読めます
Excel VBAとChatGPT APIを使えば、大量のアンケート分析が自動化できます。カテゴリ分類も感情分析もAIにお任せ!初心者でも分かる完全ガイドで、残業から解放されましょう。
「またアンケートの山か...今日も帰れそうにないな」
こんな経験、ありませんか?何百件ものアンケートを一つひとつ読んで、カテゴリ分けして、ポジティブかネガティブか判定して...気づいたら夜の10時なんてことも。
でも、もう大丈夫!Excel VBAとChatGPT APIを組み合わせれば、この苦行から解放されるんです。
ボタンをポチッと押すだけで、こんなことが起きます:
100件のアンケートなら約3分、1,000件でも30分程度で完了。手作業なら丸一日かかる作業が、コーヒーブレイクの間に終わっちゃいます。
「AIって高いんでしょ?」って思いますよね。実は違うんです:
アンケート件数 | 料金の目安 | 例えると... |
---|---|---|
100件 | 約3円 | うまい棒3分の1本 |
1,000件 | 約30円 | 缶コーヒー4分の1本 |
10,000件 | 約300円 | コンビニ弁当の半額 |
※GPT-4o miniモデル使用時
残業代と比べたら、むしろ使わない方が損かも?
APIキーって何?簡単に言うと、ChatGPTを使うための「合言葉」みたいなものです。
超重要:このキーは絶対に他人に見せちゃダメ!あなたの財布の中身と同じです。
ちょっと専門的に聞こえますが、要は「道具を準備する」だけです。
ChatGPTの返事を理解するための道具です。
左側に「JsonConverter」が出たら成功!
こんな感じで作ります:
分類したいカテゴリーを登録:
A列の2行目から、こんな感じで入力:
いよいよ本番!でも心配しないで、コピペするだけです。
"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件ずつ処理されていく様子を眺めながら、コーヒーでも飲んでリラックス♪
すごい!ChatGPTがちゃんと内容を理解して、適切に分類してくれてます。
普通にChatGPTに聞くと「これはサービス品質についてのネガティブな意見ですね」みたいな文章で返ってきちゃいます。
でもFunction Callingを使えば、「サービス品質」「ネガティブ」とピンポイントで答えてくれるんです。Excel向きでしょ?
「コンパイルエラー」が出る
「実行時エラー」が出る
処理が遅い・止まる
結果がおかしい
基本ができたら、こんな拡張も:
お疲れさまでした!ここまでできたあなたは、もう立派なExcel×AI使いです。
最初は「難しそう...」って思ったかもしれませんが、やってみたら意外とできちゃったでしょ?これがプログラミングの楽しさなんです。
この仕組みを使えば、今まで丸一日かかってたアンケート分析が30分で終わります。浮いた時間で、もっとクリエイティブな仕事ができますね。
周りで同じように困ってる人がいたら、ぜひ教えてあげてください。「え、そんなことできるの!?」って驚かれること間違いなし!
ChatGPTとExcelを味方につけて、どんどん楽をしていきましょう!
Q: MacのExcelでも使える?
A: 残念ながら、VBAの一部機能がMac版では制限されています。Windows版がおすすめです。
Q: ChatGPT以外のAIも使える?
A: もちろん!Claude APIやGemini APIでも同じような実装ができます。
Q: もっと高速化できる?
A: バッチ処理やAPI並列呼び出しで高速化可能ですが、まずは基本をマスターしましょう。
代表取締役 CEO
大阪大学基礎工学部情報科学科卒業。大学時代はAIについて研究。10年以上のWebアプリ開発・データ分析経験を持つ。株式会社ビットライト代表として、生成AI・RPA・Excelなどを活用した業務効率化の専門コンサルティングを提供。
代表取締役 CEO
大阪大学基礎工学部情報科学科卒業。大学時代はAIについて研究。10年以上のWebアプリ開発・データ分析経験を持つ。株式会社ビットライト代表として、生成AI・RPA・Excelなどを活用した業務効率化の専門コンサルティングを提供。