Excel形式のアンケートをPythonで集計してみたら一瞬で終わった話
2021-02-21
会社内でアンケートを取り、集計することがありました。本来であればオンラインでアンケートフォームなどを作れればよかったのですが、そこは会社として色々事情もあり実現できませんでした。
で、仕方がないからWordでアンケートフォームを作成し手作業で集計しました。200名ほどのアンケートを手作業でExcelにコピペするという苦行をすることになったのですが10時間くらいかかりました。テレビやyoutubeを見ながら毎日コピペをして終わらせました。もう二度とやりたくありません。
というのが去年の話で、今回はプログラミングで解決しました。調べてみるとPythonでライブラリを使えばExcelのセルを取得できるようなのでExcelでアンケートを作り、Pythonで集計するプログラムを書くことにしました。
やりたいこととしてはExcelアンケートの回答セルを指定し、集計表にまとめるということをします。それを人数分ですね。
windowsにpycharmをインストールし、その上で開発をしました。一番つまづいたのがパスを指定するところでしたが1〜2時間ほどで完成しました。
実際にアンケートを取り、プログラムを走らせたところ5分もかからず終了しました!これは気持ちいい!
今後アンケートを取る時も設問に合わせてプログラムを修正するだけなので捗りそうです。
最後にプログラムを置いておきます。よければお使いください。
import glob import openpyxl import logging from openpyxl import load_workbook #Excel形式のアンケートを集計表(Excel)に転記するプログラム #読み込むEXCELファイル inputFiles=glob.glob('C:\\Users\\user\\Desktop\\アンケート\\input\\*.xlsx') #書き込むEXCELファイル outputFile=openpyxl.load_workbook('C:\\Users\\user\\Desktop\\アンケート\\集計表.xlsx') syuukei_sheet=outputFile['集計'] iken_sheet=outputFile['意見'] #log出力 logging.basicConfig(filename='C:\\Users\\user\\Desktop\\アンケート\\syori.log', level=logging.DEBUG) logging.info('処理開始') logging.info(len(inputFiles)) #アンケートファイル数ループ for count, inputFile in enumerate(inputFiles, 1): logging.info(inputFile) input_workbook = load_workbook(filename=inputFile, read_only=True) input_sheet = input_workbook['Sheet1'] # 名前 name = input_sheet['F10'].value # 5段階で評価 A1 = input_sheet['Z27'].value B1 = input_sheet['Z28'].value C1 = input_sheet['Z29'].value D1 = input_sheet['Z30'].value E1 = input_sheet['Z31'].value A2 = input_sheet['Z36'].value B2 = input_sheet['Z37'].value C2 = input_sheet['Z38'].value D2 = input_sheet['Z39'].value E2 = input_sheet['Z40'].value F2 = input_sheet['Z41'].value G2 = input_sheet['Z42'].value # 意見 iken = input_sheet['A46'].value #書き込み syuukei_sheet.cell(row=count, column=1).value = name syuukei_sheet.cell(row=count, column=2).value = A1 syuukei_sheet.cell(row=count, column=3).value = B1 syuukei_sheet.cell(row=count, column=4).value = C1 syuukei_sheet.cell(row=count, column=5).value = D1 syuukei_sheet.cell(row=count, column=6).value = E1 syuukei_sheet.cell(row=count, column=7).value = A2 syuukei_sheet.cell(row=count, column=8).value = B2 syuukei_sheet.cell(row=count, column=9).value = C2 syuukei_sheet.cell(row=count, column=10).value = D2 syuukei_sheet.cell(row=count, column=11).value = E2 syuukei_sheet.cell(row=count, column=12).value = F2 syuukei_sheet.cell(row=count, column=13).value = G2 iken_sheet.cell(row=count, column=1).value = name iken_sheet.cell(row=count, column=2).value = iken # 保存する outputFile.save('C:\\Users\\user\\Desktop\\アンケート\\集計表.xlsx') input_workbook.close() logging.info('処理終了')