社内アンケートの集計作業を簡単にしたい!その2
前回の記事の続きです。
出力内容の確認
Microsoft Formsのアンケート結果はExcelでダウンロードできるので、まずはまずはどんな感じで出力されるのか確認しました。
すごくシンプル。
しかもテーブルになってる。(素晴らしい!)
1列目から5列目までは決まってるみたいですね。
Formsで作った内容は6列目からで、列に質問で行が回答。
質問内容のデータ化
質問の内容と回答と配点をデータ化しました。
質問と回答の組み合わせで配点が変わります。
各カテゴリー事の合計点数で評価が決まります。
もっとスマートな方法ないかなぁと思いましたが、私の力ではこれが限界です。
フローチャートの作成
コーディング前のフローチャートは雑でいいです。
大雑把にだいたいこの順序でやればいけるだろうで問題ないです。
あくまで個人で作る範疇の話ですが。
社内レビューで必要とか、お客さんへの納品物に含まれてるとかならちゃんとやったほうがいいです。
今回はそこまでやりません。
Drawioで書いてますが、普段はエディタに書いてます。
あとでそのままコメントとして使えます。
メインルーチン
ファイルを読み込んで行数分繰り返し処理します。
各カテゴリーごとに得点を計算して、それぞれの得点に対してランク判定します。
得点を計算するサブルーチン
自分で書いててややこしくなったので図で説明します。
フローチャートの最初の条件分岐が赤枠、次の条件分岐が青枠です。
一致した行の「配点」列が加点する点数です。
「質問1」の回答が「当てはまらない」だと0点となります。
ややこしいなと思う原因は、データ構造はよくないからだと思います。
ランク判定
得点によってランク判定してるだけです。
カテゴリー毎にランクの名前が異なります。
ランク判定用にテーブル作ったけど使ってないですね。
記事書くと自分の設計がガバガバだと再認識させられる。
コーディング
VBAでコーディング。
構造体はレポートとか結果の一覧表とかを出力するためのデータを貯めるために用意します。
後で配列で宣言します。
カテゴリー毎に質問の開始位置が異なるので、定数であらかじめ宣言しておきます。
Formsからダウンロードしたファイルを指定します。
あとは必要なブックとかシートとかテーブルとかのオブジェクト変数を宣言しています。
フローチャートで書いた内容とほぼ同じです。
最後のDebug.Printはデバック用です。
フローチャートと解説図を参照してください。
見ればわかる
エラー処理
今回紹介した内容にはエラー処理は書いてませんが、実際はいろいろ入れてます。
例1:ダウンロードしたファイルの質問とマスターとが一致しなかったらエラー
例2:ランク判定を厳密に書いて、どれにも一致しなかったらエラー
例3:オブジェクト変数の宣言に失敗したらエラー
例4:全く別のファイルを指定したらエラー
などなど・・・
考え出すとキリがありませんが、とても大事なことです。
エラー処理を追加するときも、まずはフローチャートを書くことをお勧めします。
どのタイミングでどんなエラーが考えられるのか、フローチャートに組み込みましょう。
あとはコーディングだけです。技術的な問題はググればいくらでも出てきます。
おわりに
いきなりコーディングを始める前にフローチャートを考えておくことはとても大事なことだと思います。
今回みたいに図にしなくてもエディタに書いておけば、それはそのままコメントに使えます。
コメントは未来の自分を助けてくれます。
エラー処理も同じです。
自分がやったことを紹介するつもりが、いつの間にかフローチャートを勧める記事になってしまいました。
以上です。
皆様からのツッコミお待ちしております。