无标题文档
|
|
|
|
|
|
|
|
下一代互联网
  当前位置:EDU首页 > 教育信息化(旧) > 中国教育网络新版 > 技术荟萃 > 软件应用
Excel中一键实现数据分布统计
http://www.media.edu.cn 2008-06-19 作者:彭晗 杨奕琦

学校教务处的教务管理者或者任课教师每个学期都要进行学生成绩统计,统计每门课程的平均分、最高分、最低分、总分及各分数段的人数等,对于每门课的平均分、最高分、最低分及总分等成绩统计的操作,大家都是用Excel的常用函数AverageMaxMinSum来解决问题,快速而高效;而对于统计每门课程各分数段的人数,大家一般用半自动半人工的方式,一个班一门课分别统计,对于多个年级、多个班,每班有多门功课这样大量的分数统计,工作量大、操作较为繁琐。

在功能强大的Excel 2003软件中,选用最为轻松、高效的两种频度分布统计的方法,并将整个统计的操作过程录制为宏,而且用设置在工作表上的按钮调用宏,将原来要加班加点干上好几天的教务管理工作,变为只需几分钟、轻松按键就可以解决问题。这些方法对于每个学期末都要进行试卷分析的教师们来说,也是提高效率的有效方法。

 

频度分布统计方法

以学生的考试成绩为例,统计给定的分数范围(区域C2:C13)内,不及格、6070,7080,809090分以上的人数,来说明如何使用Excel的函数和菜单命令来进行数据的频度分布统计。

方法一:使用频度分布统计函数FREQUENCY

函数FREQUENCY是以一列垂直数组返回某个区域中数据的频度分布。其语法形式为:FREQUENCY(data_array,bins_array),其中Data_array为一数组或对一组数值的引用,用来计算频度,在本例中为全班成绩所在区域的引用,即(C2:C13)。如果 data_array 中不包含任何数值,函数FREQUENCY返回零数组。bins_array为一数组或对数组区域的引用,设定对 data_array 进行频度计算的分段点(或间隔),在本例中不及格(小于或等于59分)、6070(大于59分且小于等于69分)、7080(大于69分且小于等于79分)、8090(大于79分且小于等于89分)及90分以上(包括90分)这几个分段点为:59697989。如果 bins_array 中不包含任何数值,函数FREQUENCY返回 data_array 元素的数目。

由于函数FREQUENCY返回一个数组,所以必须以数组公式的形式输入。具体操作为:

1.先在数据清单的旁边输入要统计的分数分段点59697989,这些值应当按升序排列,且放在相邻单元格的连续区域内,如图1E2:E5区域,即为参数bins_array

2.选定输出结果的区域(F2:F6)中,这个区域应该比分段点所在区域多一个单元格。

3.输入公式“=FREQUENCY(C2:C13,E2:E5)”(如果你习惯用“粘贴函数”,则按图2填入参数),即统计(C2:C13)中的数据在(E2:E5)各间隔中出现的次数。

4. Ctrl+Shift+Enter组合键输出数组,在区域F2F6中得到每个分段点出现多少个数据,即每个分数段的人数。

看起来FREQUENCY函数似乎挺复杂的,它的操作也比较特殊,但只要多用几次就能掌握,而且一旦你用上它了,就会因它事半功倍而爱不释手。

方法二:使用数据分析工具

1.先在数据清单的旁边输入要统计的标志(“成绩”)及分数区间,同样,这些值应当按升序排列,如图1E1:E5区域。

2.单击“工具”菜单,选择“数据分析”命令,在弹出的“数据分析”对话框中选“直方图”(如果你的“工具”菜单下没有“数据分析”命令,则要先在“工具”菜单下选定“加载宏”命令,在弹出的“加载宏”对话框中勾选“分析工具库”,如图3所示,确定后依照安装程序的指示操作即可)。

3.在弹出的“直方图”对话框中填入图4所示的各项参数,其中“输入区域”为待分析数据区域的单元格引用,即区域C1:C13;“接收区域”为E1:E5;勾选上“标志”(如果输入和接收区域没有标志项C1E1,则不勾选此复选框);在“输出区域”文本框中填入输出区域左上角的第一单元格地址F1,确定后即可得到统计结果,如图5所示的F1:G6区域。

如果我们在图4所示对话框下方勾选相应的选项,在生成输出表格时还能同时生成图表、累积百分比等。

我们可以根据自己的需要来选择统计分析数据的方法,对于要进行大量数据频度分布统计的操作者来说,以上两种方法尤其能表现它们的高效性。

几点说明

1.FREQUENCY函数返回的数组(F2:F6)中的元素个数比参数bins_array数组(E2:E5)中的元素个数多 1。返回的数组中所多出来的元素表示超出最高间隔的数值个数。

2.“直方图”分析工具可计算数据单元格区域和数据接收区间的单个和累积频度。此工具可用于统计数据集中某个数值出现的次数。

3.两种方法输出的结果含义相同,即数组{1,1,5,2,3}为给定成绩数组C1:C13中,小于或等于“59的分数(不及格的)有“1人,大于“59且小于等于“69的有“1人,大于“69且小于等于“79的有“5人,大于“79且小于等于“89的有“2人,最后是大于“89的有“3人。

 

录入并整理表格

在掌握了解决问题的方法后,下面以某中学6个年级,每年级10个班,考8门课的实例,来具体操作统计这些成绩表。

将每个班的各门课程的成绩录入在同一个工作表中,每个年级各班的成绩放在同一个工作薄内。这样,6个年级应该有6个工作薄。很明显,对这些工作薄中的工作表进行的统计工作存在大量的重复劳动,使用Excel 2003的宏可以节省大量时间和人力。

 

录制宏

打开初一年级的工作薄,单击“工具”菜单下的“宏”命令,选择“录制新宏”,在“录制新宏”对话框中填入宏名“frequency”和快捷键“f”,如图7所示。

1.利用Excel工作表的“批量”操作功能,右击任意一个工作表标签,在弹出的快捷菜单中选择“选定全部工作表”,这样本工作薄的10张工作表全部被选中,以后所有操作对选中的每个工作表都同时有效。

2.将科目名称(B2:I2)复制到结果区域(O2:V2),在N3:N7区域填上各成绩分段点,在M3:M7填上各分段点的含义。

3.按照前面介绍的方法一依次求得各门课程的频度分布,如图8所示。单击“工具”菜单下的“宏”,选择“停止录制”,结束宏的录制。

这样,在录制宏的同时,整个初一年级10个班的成绩就统计出来了,保存并关闭工作薄。

 

使用宏命令

至于其余5个年级的分数处理,我们只要打开工作薄,按下快捷键“Ctrl+f”就可以轻松求得整个年级的统计结果,单击任何一个工作表标签,检查每个班所有科目的成绩统计。

1.录制的宏已成为一个Excel命令,以后我们不需要再次录制,就可以像使用其他Excel命令一样使用它了。

2.FREQUENCY函数中的第一个参数,在本例中应选择全校人数最多的一个班的分数所占用的单元格区域。例如,全校人数最多的班级是35人,那我们在录制宏的过程中,求“数学”成绩的分数频度统计函数公式应为“=FREQUENCY(B3:B37, E2:E5)”,函数将忽略空的单元格。

3.要使用宏命令,应在“工具”菜单下“宏”命令的“安全性”标签页中,将“安全级”设为“低”。

4.成绩表的形状要相似。即成绩表中,字段名行和记录(分数)应是从同一行开始填写的,在本例中为第三行开始填分数。

5.如果考试科目的数目不同的话,应分别录制不同的宏。

 

制作按钮

为了使得操作更直观、简便,我们可以在工作表上制作按钮。

1.利用“视图”菜单下的“工具栏/Visual Basic”来启动“Visual Basic”工具。

2.在“Visual Basic”工具栏中单击“控件工具箱”按钮,再单击“设计模式”按钮切换到设计模式,单击“按钮”按钮,并在工作表窗口中拖拽出一个范围,则按钮就会显示在工作表中了。

3.右击新建的“按钮”,在快捷菜单中选择“属性”,即可改变按钮的属性。如设置Caption属性,可以更改按钮上的文字,我们命名第一个按钮为“频度分布”。同样的方法制作第二个“数据分析”按钮。

4.右击“频度分布”按钮,在快捷菜单中选择“查看代码”,弹出如图9所示的“初一.1班”模块窗口,“频度分布”按钮要执行的是frequency宏程序,则只需要键入宏程序名“frequency”即可,如图9右窗格所示。

5.在任务栏中单击工作表按钮,回到Excel工作表中,单击“退出设计模式”按钮,退出设计模式。

6.按下工作表中的“频度分布”按钮,直接运行frequency宏,求得工作薄中所有工作表的频度分布统计。

我们可以根据需要,设置不同的按钮来完成不同的功能。

 

生成并修改程序代码

1.frequency宏的程序代码通过“工具//宏”命令打开“宏”对话框,选择“frequency”宏名,再单击“编辑”按钮得到。

Sub frequency()

'选取工作簿内所有工作表(即全年级所有班级的成绩表)

Sheets(Array("初一.1", "初一.2", "初一.3", "初一.4", "初一.5", "初一.6", "初一.7", "初一.8", "初一.9", "初一.10")).Select

Sheets("初一.1").Activate

'输入分段点

Range("M2").Select

ActiveCell.FormulaR1C1 = "59"

Range("M3").Select

ActiveCell.FormulaR1C1 = "69"

Range("M4").Select

ActiveCell.FormulaR1C1 = "79"

Range("M5").Select

ActiveCell.FormulaR1C1 = "89"

Range("N1").Select

ActiveCell.FormulaR1C1 = "成绩"

Range("N2").Select

ActiveCell.FormulaR1C1 = "不及格"

Range("N3").Select

ActiveCell.FormulaR1C1 = "6070"

Range("N4").Select

ActiveCell.FormulaR1C1 = "7080"

Range("N5").Select

ActiveCell.FormulaR1C1 = "8090"

Range("N6").Select

ActiveCell.FormulaR1C1 = "90以上"

'复制字段名行

Range("B2:I2").Select

Selection.Copy

Range("O1").Select

ActiveSheet.Paste

'各科成绩的频度分布统计

Range("O2:O6").Select

ActiveWindow.SmallScroll Down:=-27

Selection.FormulaArray = "=FREQUENCY(R[1]C[-13]:R[29]C[-13],RC[-2]:R[3]C[-2])"

Range("P2:P6").Select

ActiveWindow.SmallScroll Down:=-24

Selection.FormulaArray = "=FREQUENCY(R[1]C[-13]:R[29]C[-13],RC[-3]:R[3]C[-3])"

Range("Q2:Q6").Select

ActiveWindow.SmallScroll Down:=-36

Selection.FormulaArray = "=FREQUENCY(R[1]C[-13]:R[29]C[-13],RC[-4]:R[3]C[-4])"

Range("R2:R6").Select

ActiveWindow.SmallScroll Down:=-9

Selection.FormulaArray = "=FREQUENCY(R[1]C[-13]:R[29]C[-13],RC[-5]:R[3]C[-5])"

Range("S2:S6").Select

ActiveWindow.SmallScroll Down:=-9

Selection.FormulaArray = "=FREQUENCY(R[1]C[-13]:R[29]C[-13],RC[-6]:R[3]C[-6])"

Range("T2:T6").Select

ActiveWindow.SmallScroll Down:=0

Selection.FormulaArray = "=FREQUENCY(R[1]C[-13]:R[29]C[-13],RC[-7]:R[3]C[-7])"

Range("U2:U6").Select

ActiveWindow.SmallScroll Down:=-6

Selection.FormulaArray = "=FREQUENCY(R[1]C[-13]:R[29]C[-13],RC[-8]:R[3]C[-8])"

Range("V2:V6").Select

ActiveWindow.SmallScroll Down:=-6

Selection.FormulaArray = "=FREQUENCY(R[1]C[-13]:R[29]C[-13],RC[-9]:R[3]C[-9])"

Range("P10").Select

End Sub

2.“数据分析”按钮的功能是在频度分析基础上作出图表,编写其程序代码如下:

Private Sub CommandButton2_Click()

If Range("o5") <> "" Then

'生成工作簿中所有工作表的图表

Dim mychart1 As ChartObject

For i = 1 To 10

class = "初一." + CStr(i) + ""

Set mychart1 = Worksheets(class).ChartObjects.Add(380, 150, 320, 180)

mychart1.Chart.ChartType = xlColumnClustered

mychart1.Chart.SetSourceData Source:=Sheets(class).Range("N1:V6"), PlotBy:=xlRows

mychart1.Chart.Legend.Font.Name = "隶书"

'图例格式设置

mychart1.Chart.Legend.Font.Size = 10

mychart1.Chart.Legend.Font.ColorIndex = 11

'设置图表为圆角边框

mychart1.RoundedCorners = True

Next

Else

MsgBox "请先执行频度分析操作!"

End If

End Sub

单击“频度分析”按钮和“数据分析”按钮后生成的统计结果。

在我们实际的生活和工作当中,常常需要对数据进行频率分布的统计,比如计算不同工资段的人员分布、公司员工的年龄分布、教师根据学生成绩的分布情况进行试卷分析等等,大家可以根据需要,灵活运用本文介绍的方法。

相关的Excel文件可以从http://www.media.edu.cn网站下载。

页面功能 【字体:   】 【打印】 【关闭】 【联系我们
相关链接
  • 分步式教育资源管理系统的设计和实现
  • 基于Internet的智能导学系统设计
  • 相关链接
  • DVR技术支撑下基于问题的学习
  • 用UML开发大学英语网络教学系统
  • 相关链接
  • 赛尔毕博Blackboard™7.1升级包
  • SFlow技术在网络安全管理中的应用
  • 相关链接
  • 批处理命令瞬间建好考试作业环境
  • Authorware流行网络的关键之处
  • 相关链接
  • 用开源软件构建数字校园
  • 在excel下利用分类汇总快速统计数据
  • 无标题文档
    主管单位:中华人民共和国教育部  主办单位:教育部科技发展中心  承办单位:中国教育和科研计算机网CERNET
    《中国教育网络》编辑部 京ICP证060236号 联系电话:010-62603869
    建议使用800*600分辨率及Microsoft IE5.0版本以上浏览器
    copyright © 北京赛尔时代传媒文化有限公司 All Rights Reserved