Excel高效实战应用:VBA一键自动汇总多表问卷调查结果(含案例下载)

HI,伙伴们,你有用Excel做过问卷调查吗?你是怎么做的?

最近一个伙伴询问,他们公司的厂区保安承包给一家物业公司,半年了,领导让他在公司内部对这家物业公司的服务满意度做一下问卷调查,问我有没有什么简单快捷的办法?

公司有1000多人,以前都是把问卷调查文件群发给同事,然后大家填写完后再回发给他统计数据,收集回来的问卷调查数据也是乱七八糟的,所以他经常要花两三天时间去汇总和计算数据。我一看,晕菜了,怎么什么答案都有呀,而且这些答案还是一个一个过滤后才能录入。

下图是最终自动汇总效果,他只需要点击“汇总请点我”按钮,稍等片刻,程序就全部统计好,再也不需要几天几夜,秒秒钟就可以出结果!会这样的技能,领导不喜欢才怪呢!

今天沈老师就跟大家分享问卷调查制作方法。

一、制作调查问卷模板

很多人制作调查问卷模板时瞻前不顾后,做表格的时候很爽,汇总数据时就不爽了。在制作问卷模板时,除了考虑要调查的问卷内容外,还要考虑数据怎么统一规范,数据怎么来汇总等一系列问题。

STEP 1:首先制作一份问卷调查表。如下图所示。

STEP 2:为了统一规范答案,所以我们在右侧设置下拉框选择答案。我们使用数据验证或者叫数据有效性(不同的Excel版本,叫法不一样)。注意“A,B,C,D”中间的逗号是在英文半角状态下输入的。

STEP 3:接下来我们来设计数据链接。为了后续数据汇总方便,我们把答案统一引用到第21行。

STEP  4:设计好后保存,然后把调查问卷表格群发出去。

二、快速收集问卷调查数据

STEP 1:新建一个Excel文档,保存类型设置为保存为Excel启用宏的工作簿。

STEP 2:点击工作表名,选择查看代码。

STEP 3:插入模块,并在模块上输入具有汇总功能的代码。

详细代码如下:

Sub huizong()

Dim bt As Range, r As Long, c As Long

r= 1    '1 是表头的行数

c= 8    '8 是表头的列数,也就是有几道题

Range(Cells(r + 1, "A"), Cells(65536, c)).ClearContents    ' 清除汇总表中原表数据

Application.ScreenUpdating = False

Dim FileName As String, wb As Workbook, Erow As Long, fn As String, arrAs Variant

FileName = Dir(ThisWorkbook.Path & "\*.xlsx")

Do While FileName <> ""

If FileName <> ThisWorkbook.Name Then    ' 判断文件是否是本工作簿

Erow = Range("A1").CurrentRegion.Rows.Count + 1    ' 取得汇总表中第一条空行行号

fn = ThisWorkbook.Path &"\" & FileName

Set wb = GetObject(fn)    ' 将fn 代表的工作簿对象赋给变量

Set sht = 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.Close False

End If

FileName = Dir    ' 用Dir 函数取得其他文件名,并赋给变量

Loop

Application.ScreenUpdating = True

End Sub

STEP 4:保存代码后退出,插入一个图形按钮,链接该宏程序,然后保存文件,并将该文件与汇总回来的调查问卷放在同一个文件夹下面,最终的效果如下:

小结:设计问卷需要用到Excel的一些常用技法,后面的一键汇总则需要VBA代码来支撑。

本文配套的教学案例在Excel学习QQ群:247329767下载。

(0)

相关推荐