excelvba自动上传学生成绩(excelvba实现自动计算体能成绩)
如何使用excel中的rank函数进行排序 Excel VBA自动计算学生总分、平均分和排名
今天介绍一段VBA代码,是对一个学生信息表格进行统计和排名,并对结果表格进行样式设置的功能。它可以用于教育机构、培训机构、企业内部培训等场景,对学生的成绩、学习情况等进行统计和排名,以便于管理者更好地了解每个学生的情况,并针对个体情况做出相应的决策。也可用来帮助初学者了解 VBA 的基本语法和常见操作。
源数据
功能效果
完整代码
Sub CalculateGrade() Dim i As Integer Dim total, avg, rank As Double #39 循环处理每个学生 For i = 2 To Range(#34A#34 Rows.Count).End(xlUp).Row #39 从第2行开始到一行循环 #39 计算总分 Range(#34F1#34).Value = #34总分#34 #39 将F1单元格的值设置为“总分” total = Application.Sum(Range(#34B#34 i #34:E#34 i)) #39 计算该行B到E列的总和 Range(#34F#34 i).Value = Format(total, #34#.00#34) #39 将总分格式化为两位小数并赋值到F列 #39 计算平均分 Range(#34G1#34).Value = #34平均分#34 #39 将G1单元格的值设置为“平均分” avg = total / 4 #39 计算平均分 Range(#34G#34 i).Value = Format(avg, #34#.00#34) #39 将平均分格式化为两位小数并赋值到G列 #39 计算排名 Range(#34H1#34).Value = #34排名#34 #39 将H1单元格的值设置为“排名” rank = Application.WorksheetFunction.rank(avg, Range(#34G$2:G$#34 Range(#34A#34 Rows.Count).End(xlUp).Row)) #39 计算平均分在G列中的排名 Range(#34H#34 i).Value = rank #39 将排名赋值到H列 Next i #39 按照排名升序排列F列 Range(#34A1#34).CurrentRegion.Sort Key1:=Range(#34H2#34), Order1:=xlAscending, Header:=xlYes #39 按照H列的值升序排列当前区域,即将学生信息表按照平均分的升序排列 #39 设置结果表格的样式 With Range(#34A1#34).CurrentRegion .Borders.LineStyle = xlContinuous #39 设置单元格边框线为连续线 .Font.Name = #34微软雅黑#34 #39 设置字体为“微软雅黑” .Font.Size = 12 #39 设置字号为12 #39 只修改之一行标题行的样式 With Rows(1) .Font.Size = 12 #39 设置字号为12 .Font.Bold = True #39 设置字体加粗 .Font.Name = #34微软雅黑#34 #39 设置字体为“微软雅黑” .ColumnWidth = 10 #39 设置列宽为10 End With #39 修改除标题行外的单元格样式 With .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count) .Font.Size = 10 #39 设置字号为10 End With End With #39 选中A1单元格 Range(#34A1#34).Select #39 选中A1单元格End Sub
excelvba实现自动计算体能成绩 excelvba固定合格率随机生成成绩