让Frequency函数帮你自动统计
办公族
在利用Excel分析考试成绩的时候,经常要统计各个分数段的分布人数。相信大家肯定会首选Frequency这个函数来进行统计。我们可以用它来统计一组数中符合条件的数值出现的次数,在需要统计的学生数量不多的时候,我们可以手工使用该函数,然而要统计的学生数量很多的时候,手工使用Frequency函数是一件很麻烦的事。能不能借助VBA把Frequency函数使用得更加得心应手呢?
问题分析
现在我们这里有一张成绩表,表中有姓名、学号、英语三个字段,首先依次输入各个学生的姓名、学号以及英语成绩。为了便于大家理解,在此仅列出五个学生,我们要统计出C2:C6区域内的五个英语成绩,看看各分数段范围内的人数。
当然,在以后需要增加学生的时候,我们只要在程序代码中对学生数作一些小的变动就行了。下面,我们首先看一下怎么手工使用Frequency函数,这对于我们编写VBA代码有很大的帮助。
1.首先在A10:A14单元格区域内输入分数段标准:59、69、79、89、100,马上就根据此标准来统计,并且这个标准可以随时变动,很方便,不需要再去更改每个公式内的具体值。
2.现在需要用鼠标选中区域C10到C14,在编辑栏输入“=FreQuency(C2:C6,A10:A14)”,其中C2:C6是需要统计的数据,A10:A14是统计标准。我们最后的统计结果就放在c10到c14的单元格中。
3.由于Frequency是数组公式,所以需要按住“Crtl+Shift+Enter”组合键产生数组公式“={Frequency(C2:C6,A10:A14)}”,把数组公式作为一个整体来计算。
我们已经对使用该函数的手工过程作了完整的分析,目的就是在编写Vba代码的时候可以参照此手工过程,将它用语句来实现,问题的关键是如何在VBA中描述这个数组公式。
解决问题
首先启动Excel,打开需要统计的工作表。依次选择“视图→工具栏→控件工具箱”,选中命令按钮控件,在工作表中制作出一个命令按钮,默认的名称是“CommanButton1”。双击该命令按钮,打开Visual Basic编辑器窗口,在“Private Sub CommandButton1 Click()”与“End Sub”之间输入以下代码。
Sheets("sheet1").[b8] = "分数段"
Sheets("sheet1").[c8] = "人数"
'在B8和C8两个单元格添加“分数段”与“人数”两个字段
Sheets("sheet1").[b10] = "0-59"
Sheets("sheet1").[b11] = "60-69"
Sheets("sheet1").[b12] = "70-79"
Sheets("sheet1").[b13] = "80-89"
Sheets("sheet1").[b14] = "99-100"
'添加各个分数段的范围
Range("c10:c14").Select
'选中c10到c14单元格,为马上添加公式做好准备
Selection.FormulaArray = "=FREQUENCY((c2:c6),(a10:a14))"
'为选中单元格区域添加数组函数,其中,c2到c6是需要统计的
'单元格区域,A10到A14单元格是统计的标准段
通过以上代码,就可以自动在工作表中添加“分数段”、“人数”、“0-59”等信息,并且可以在“人数”区域自动得到各个分数段的人数,不需要我们手工选中一大片区域并输入复杂的数组公式了,所有统计结果将会来得更容易。
代码输入完毕以后,首先在Visual Basic编辑器窗口单击工具栏中的三角形运行按钮,确认程序可以运行通过。接着按“Alt+F11”快捷键返回Excel主窗口,单击工作表中的按钮,所有的统计结果就全部自动出现了。如果统计的数据范围、分数标准有所变动,我们只需要在VBA中作少许变动就行了。