【Excelマクロ】アンケート結果を整形する

毎回「ちょっと面倒な作業」していませんか?

今回の例としてはアンケートを挙げていますが、アンケートに限らず、次のような処理はさまざまな資料で発生します。

たとえば、

  • 回答の中に改行が混ざっていてうまく表示されない
  • 全角と半角がバラバラで検索や集計ができない
  • 「なし」「該当なし」「-」など、いろんな表記が混ざっていて統一したい

こういうデータを毎回目で見て修正していませんか?

VBA(マクロ)を使えば、ボタン1つで一括変換できます。

入力方法がバラバラなデータを揃えるVBA

次のような入力方法がバラバラなアンケートデータを整えて、集計など分析しやすい状態にしていきます。

例:変換前のデータ

氏名性別回答
田中 一郎特に無し
サトウ ハナコ該当なし
鈴木 太郎
山田花子特になし

ゴール:変換後のデータ

氏名性別回答
田中一郎無し
サトウハナコ無し
鈴木太郎無し
山田花子無し

実際の流れ

ステップ1:準備

  • Excelファイルを用意し、1枚目のシートにアンケート結果を貼り付けます。
  • セルは「A列:氏名」「B列:性別」「C列:回答」としましょう。

ステップ2:VBAの内容

Sub survey_clean()

    Dim i As Long
    Dim ls_rw As Long
    Dim res As String

    ' 最終行を取得(C列にデータが入っている行数)
    ls_rw = Cells(Rows.Count, 3).End(xlUp).Row
    
    ' 2行目から順に処理
    For i = 2 To ls_rw
        ' 氏名列(A列)を整える
        Cells(i, 1).Value = Replace(Cells(i, 1).Value, " ", "") ' 全角スペースを削除
        Cells(i, 1).Value = StrConv(Cells(i, 1).Value, vbWide) ' 半角を全角に統一

        ' 回答列(C列)を整える
        res = Cells(i, 3).Value
        res = Replace(res, Chr(10), "") ' 改行コード削除
        res = Replace(res, Chr(13), "") ' 改行コード削除

        ' よくある不要な表記を「無し」に統一
        res = Replace(res, "該当なし", "無し")
        res = Replace(res, "なし", "無し")
        res = Replace(res, "特になし", "無し")
        res = Replace(res, "-", "無し")

        Cells(i, 3).Value = res
    Next i

    MsgBox "完了しました"

End Sub

内容としては、選択されているシートで、C列の最終行を探し出し、2行目から最終行までのデータをきれいにしていくコードです。

全角スペースの削除、半角を全角に、改行(コード)の削除、さらに、回答自体については、セル上で行なってもいいですが、コードが長くなるので、「res」という変数に入れた上で、変数上で改行コードの削除や、内容の変更を行なっています。

今回は例のため、4行で行いましたが、これが100行、1000行とデータが増えていくと目視では限界があります。そのため、VBAを使うことでスムーズに変更することができます。

ただ、文字の変更については、想定したもの以外のものが出てきた場合には、「無し」になるように新たにVBAを追加する必要があります。

ポイント

  • 今回は難しい構文や関数は使っていません
  • 処理は「1行ずつ」だから、見た目もシンプルになります
  • 「Replace」で指定した文字列だけを置き換えるので、トラブルになりにくい
  • 変換対象はC列だけ!必要なら他の列にも応用可

他に応用例は?

  • 回答に「未回答」がある場合は空欄にするなど、条件分岐も可能です
  • 複数の列にまたがって同じような整形をしたいときは、列番号を変えるだけで応用できます

まとめ

一度きりのものであれば、マクロを作成するのは大袈裟ですが、毎月実施している、毎日膨大な量のアンケートの集計を行っている、など定期的にある場合には、マクロで処理をした方が作業時間が短縮できます。

すべての業務の効率化は目視や、パワープレイ(手作業など)をしていることをいかにExcelにやらせるかがポイントです。

コメント