用vba统计分析学生成绩(三率)_第1页
用vba统计分析学生成绩(三率)_第2页
用vba统计分析学生成绩(三率)_第3页
用vba统计分析学生成绩(三率)_第4页
免费预览已结束,剩余1页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品用 vba 统计分析学生成绩(三率)根据全校(年级)学生成绩汇总表,按年级分班级对各学科参考人数、总分、平均分、及格人数、及格率、良好人数、良好率、优秀人数、优秀率及教师积分进行统计分析。代码:Sub统计参数 ()Application.ScreenUpdating = False '屏蔽刷屏Application.DisplayAlerts = False'禁止弹出提示Dim Arr, brr(), d As Object, i As Long, j As Long, k As Long, m As Long, s As Long, t As Long, Endrow A

2、s Long, EndColumn As Long感谢下载载精品Set d = CreateObject("scripting.dictionary") '用代码创建字典Sheets(" 成绩分析 ").DeleteOn Error GoTo 0With Sheets("原始数据 ")Endrow = .Cells(Rows.Count, 1).End(3).Row - 1'A 列最大单元格减1,即获取行数EndColumn = .Cells(2, Columns.Count).End(1).Column'获取

3、列数Arr = .Cells(2, 1).Resize(Endrow, EndColumn).Value' 把 " 原始数据 "表从 Cells(2, 1)到最后一个单元格的数值装入arrEnd WithReDim brr(1 To UBound(Arr), 1 To 12)' 重新声明brr, 行从 1 到最后 1 行,列从 1 到 12For j = 5 To UBound(Arr, 2)'j 从第 5 列到最后一列(从第二行读取列数)For i = 2 To UBound(Arr)'i 从第 2 行到最后一行If Len(Arr(i,

4、j) Then'当 (Arr(i, j) 不为空时s = d(Arr(1, j) & Arr(i, 1) & Arr(i, 3)'d()标题(学科)年级班别If s = Empty Thenm = m + 1d(Arr(1, j) & Arr(i, 1) & Arr(i, 3) = ms = mbrr(s, 1) = Arr(i, 1)' 把各年级装入数组brr(s, 1)brr(s, 2) = Arr(i, 3)' 把各班别装入数组brr(s, 1)brr(s, 3) = Arr(1, j)' 把各科目装入数组brr(s

5、, 1)End Ifbrr(s, 4) = brr(s, 4) + 1'brr(s, 4)计数brr(s, 5) = brr(s, 5) + Arr(i, j)'brr(s, 5) 累加成绩brr(s, 6) = Format(brr(s, 5) / brr(s, 4), "0.00")'brr(s, 5) 装入平均成绩' 明确各科部分,以便计算出其“三率”If Arr(1, j) = " 语文 " Or Arr(1, j) = " 数学 " Or Arr(1, j) = " 英语 "

6、; Then k = 120 ' 如果所在列为语文 Or 数学 or 英语则总分 k = 120 分.If Arr(1, j) = "物理 " Or Arr(1, j) = "化学 " Then k = 100' 如果所在列为 " 物理 " Or" 化学 " 则 ' 总分k = 100分 .If Arr(1, j) = "政治 " Or Arr(1, j) = "历史 " Or Arr(1, j) = "生物 " Then k =

7、60'如果所在列为" 政治 " Or " 历史 " Or " 生物 " 则总分k = 60分 .If Arr(i, j) >= 0.6 * k Then brr(s, 7) = brr(s, 7) + 1' 统计及格人数,存入 brr(s, 7)If Arr(i, j) >= 0.8 * k Then brr(s, 9) = brr(s, 9) + 1' 统计良好人数,存入 brr(s, 9)If Arr(i, j) >= 0.9 * k Then brr(s, 11) = brr(s, 11

8、) + 1感谢下载载精品' 统计优秀人数,存入 brr(s, 11)brr(s, 8) = Format(brr(s, 7) / brr(s, 4), "0.00%")' 计算及格率,格式为 % ,存入 brr(s, 8)brr(s, 10) = Format(brr(s, 9) / brr(s, 4), "0.00%")' 计算良好率,格式为 % ,存入 brr(s,10)brr(s, 12) = Format(brr(s, 11) / brr(s, 4), "0.00%")' 计算优秀率,格式为 %

9、 ,存入 brr(s, 12) End IfNextNextWith Sheets.Add(After:=Sheets(Sheets.Count).Name = "成绩分析 "' 新建工作表,并命名为" 成绩分析 "End WithWith Sheets("成绩分析 ").Cells(3, 1).Resize(1000, 14).ClearContents'清除指定区域.Cells(3, 1).Resize(1000, 14).UnMerge'清除合并, 即将一个合并区域分成多个单元格.Cells(4, 1).

10、Resize(m, 14).Value = brr'把 brr 数组填入 Cells(4, 1).Resize(m,14).Cells(3, 1).Resize(1, 14).Value = Array("年级 ", " 班级 ", " 学科 ", " 参考人数 ", " 总分 ", " 平均分 ", " 及格人数 ", " 及格率 ", " 良好人数 ", " 良好率 ", "

11、 优秀人数 ", " 优秀率 ", " 积分 ", " 任课老师 ")'标题填入 Cells(3, 1).Resize(1, 14)With .Cells(3, 1).Resize(m + 1, 14)'在整个数据区域.Sortkey1:=.Cells(4,1),order1:=xlAscending,key2:=.Cells(4,2),order2:=xlAscending, Header:=xlYes' 单元格区域 .Sort 关键字 1:= 单元格区域 ("A4"),.Bor

12、ders.LineStyle = xlNone'取消边框.Borders.LineStyle = xlContinuous' 区域内单元格的边框线为实线End WithWith .Cells(4, 1).Resize(m, 1)'选定操作范围,B4 至 Bm 。.Offset(0, 1).EntireColumn.Insert' 在当前单元格Cells(4, 1) (下同)右侧处插入一列For i = 1 To .Count - 1If.Cells(i).Value=.Cells(i+1).ValueThen.Cells(i).Offset(0,1).Resiz

13、e(2, 1).Merge' 上下单元格相等,右侧相应的合并。Next.Offset(0, 1).Copy'复制当前单元格右列第4 至第 m 个单感谢下载载精品元格.PasteSpecial xlPasteFormats' 粘贴复制的源格式.Offset(0, 1).EntireColumn.Delete'删除右边第1 列End WithWith .Cells(4, 2).Resize(m, 1)' 当前单元格为Cells(4, 2).Offset(0, 1).EntireColumn.InsertFor i = 1 To .Count - 1If.Ce

14、lls(i).Value=.Cells(i+1).ValueThen.Cells(i).Offset(0,1).Resize(2, 1).Merge'上下单元格相等,右侧相应的合并Next.Offset(0, 1).Copy' 复制当前单元格右列第4 至第 m 个单元格.PasteSpecial xlPasteFormats' 粘贴复制的源格式.Offset(0, 1).EntireColumn.Delete' 删除右边第1 列End With.Cells(1, 1).SelectEnd WithWith Sheets("成绩分析 ")t = Range("b65536").End(xlUp).Row' 所要计算的行数For i = 4 To t.Cells(i,13) =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论