Excel形式のアンケートをPythonで集計してみたら一瞬で終わった話

会社内でアンケートを取り、集計することがありました。本来であればオンラインでアンケートフォームなどを作れればよかったのですが、そこは会社として色々事情もあり実現できませんでした。

で、仕方がないから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('処理終了')

 

 

 

 

soon
  • soon
  • 1986年生まれのjavaプログラマー。28歳の時に7年働いた販売士からプログラマーに転職をする。常駐先を転々としながら日々生きています。