アンケートの自由記述欄には、利用者や顧客の「生の声」が多く含まれています。
しかし、Excelにまとまった大量の自由回答を手作業で分類するのはとても大変です。
そんなときに便利なのが、キーワードをもとに自動で分類するVBAマクロです。
あらかじめ用意したキーワードをもとに、該当する回答を自動的に分類することで、集計作業を効率化できます。
キーワード分類マクロの使い方
次のマクロは、B列に入力された自由回答の中から、指定したキーワードを含む行を検出し、C列に分類名を付ける処理です。
Sub ClassifyByKeyword()
Dim i As Long
Dim lastRow As Long
Dim txt As String
Dim kw As Object
' キーワードと分類名の組(追加可)
Set kw = CreateObject("Scripting.Dictionary")
kw.Add "価格", "料金"
kw.Add "高い", "料金"
kw.Add "安い", "料金"
kw.Add "接客", "対応"
kw.Add "丁寧", "対応"
kw.Add "遅い", "スピード"
kw.Add "早い", "スピード"
lastRow = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To lastRow
txt = Cells(i, 2).Value
Cells(i, 3).Value = "" ' 初期化
Dim key As Variant
For Each key In kw.Keys
If InStr(txt, key) > 0 Then
Cells(i, 3).Value = kw(key)
Exit For
End If
Next key
Next i
MsgBox "分類が完了しました", vbInformation
End Sub
このマクロは次のようなルールで分類を行っています。
- 回答文(B列)にキーワードが含まれているかを調べる
- 最初に一致したキーワードに対応する分類名をC列に出力する
- たとえば「価格が高いと思います」という回答なら「料金」に分類
このように、1つの回答に対して1分類のみを付けるシンプルな構成ですが、実務では十分使えます。
出力イメージ(自由回答分類マクロ)
たとえば、B列にアンケートの自由記述が入力されているとします。
| No | 自由回答 | 分類 |
|---|---|---|
| 1 | 価格が高いと思いました | 料金 |
| 2 | 接客が丁寧で安心できた | 対応 |
| 3 | 商品の到着が遅かった | スピード |
| 4 | 安いのに品質が良い | 料金 |
| 5 | 担当者の対応が丁寧だった | 対応 |
| 6 | 注文してからすぐ届いたので助かりました | スピード |
- B列:元の自由記述回答
- C列:自動で分類されたカテゴリ
このように「分類名」が自動で付与されることで、後の集計や分析がとても楽になります。
実装するメリット
このような分類マクロを導入することで、次のような利点があります。
- 自由記述の分析時間が大幅に短縮される
- キーワードを調整するだけで柔軟な分類が可能
- 複数の分類ルールを一元管理できる
- 人による判断のばらつきを減らせる
たとえば「料金に関する意見をまとめたい」といった集計ニーズにすばやく対応でき、会議資料や報告書作成も効率的になります。
また、分類の基準をDictionaryで定義しているため、あとからキーワードを増やしたり変更したりするのも簡単です。
まとめ
自由回答を自動分類するVBAマクロは、アンケート分析の作業負担を大きく軽減してくれます。
- 複数のキーワードを柔軟に設定可能
- 自由回答の中に該当キーワードがあるかを自動判定
- 初めての方でも使いやすいシンプルな構造
- 分類名の定義を変更することで、複数用途に対応できる
ExcelとVBAを活用すれば、面倒な作業をシンプルに自動化できます。
アンケート集計に時間がかかっている方は、ぜひこのマクロを取り入れてみてください。


