HI,伙伴们,你有用Excel做过问卷调查吗?你是怎么做的?
最近一个伙伴询问,他们公司的厂区保安承包给一家物业公司,半年了,领导让他在公司内部对这家物业公司的服务满意度做一下问卷调查,问我有没有什么简单快捷的办法?
下图是最终自动汇总效果,他只需要点击“汇总请点我”按钮,稍等片刻,程序就全部统计好,再也不需要几天几夜,秒秒钟就可以出结果!会这样的技能,领导不喜欢才怪呢!
一、制作调查问卷模板
很多人制作调查问卷模板时瞻前不顾后,做表格的时候很爽,汇总数据时就不爽了。在制作问卷模板时,除了考虑要调查的问卷内容外,还要考虑数据怎么统一规范,数据怎么来汇总等一系列问题。
STEP1:首先制作一份问卷调查表。如下图所示。
STEP2:为了统一规范答案,所以我们在右侧设置下拉框选择答案。我们使用数据验证或者叫数据有效性(不同的Excel版本,叫法不一样)。注意“A,B,C,D”中间的逗号是在英文半角状态下输入的。
STEP3:接下来我们来设计数据链接。为了后续数据汇总方便,我们把答案统一引用到第21行。
STEP4:设计好后保存,然后把调查问卷表格群发出去。
二、快速收集问卷调查数据
STEP1:新建一个Excel文档,保存类型设置为保存为Excel启用宏的工作簿。
STEP2:点击工作表名,选择查看代码。
STEP3:插入模块,并在模块上输入具有汇总功能的代码。
详细代码如下:
Subhuizong()
DimbtAsRange,rAsLong,cAsLong
r=1'1是表头的行数
c=8'8是表头的列数,也就是有几道题
Range(Cells(r+1,"A"),Cells(65536,c)).ClearContents'清除汇总表中原表数据
Application.ScreenUpdating=False
DimFileNameAsString,wbAsWorkbook,ErowAsLong,fnAsString,arrAsVariant
FileName=Dir(ThisWorkbook.Path&"\*.xlsx")
DoWhileFileName<>""
IfFileName<>ThisWorkbook.NameThen'判断文件是否是本工作簿
Erow=Range("A1").CurrentRegion.Rows.Count+1'取得汇总表中第一条空行行号
fn=ThisWorkbook.Path&"\"&FileName
Setwb=GetObject(fn)'将fn代表的工作簿对象赋给变量
Setsht=wb.Worksheets(1)'汇总的是第1张工作表
'将数据表中的记录保存在arr数组里
arr=sht.Range("A21:H21")'答案收集在第21行的A21:H21
'将数组arr中的数据写入工作表
Cells(Erow,"A").Resize(UBound(arr,1),UBound(arr,2))=arr
wb.CloseFalse
EndIf
FileName=Dir'用Dir函数取得其他文件名,并赋给变量
Loop
Application.ScreenUpdating=True
EndSub
STEP4:保存代码后退出,插入一个图形按钮,链接该宏程序,然后保存文件,并将该文件与汇总回来的调查问卷放在同一个文件夹下面,最终的效果如下:
小结:设计问卷需要用到Excel的一些常用技法,后面的一键汇总则需要VBA代码来支撑。