Excel VBA自动计算学生总分、平均分和排名

【Excel VBA自动计算学生总分、平均分和排名】今天介绍一段VBA代码,是对一个学生信息表格进行统计和排名,并对结果表格进行样式设置的功能 。它可以用于教育机构、培训机构、企业内部培训等场景,对学生的成绩、学习情况等进行统计和排名,以便于管理者更好地了解每个学生的情况,并针对个体情况做出相应的决策 。也可用来帮助初学者了解 VBA 的基本语法和常见操作 。

源数据


Excel VBA自动计算学生总分、平均分和排名

功能效果


Excel VBA自动计算学生总分、平均分和排名

完整代码

Sub CalculateGrade()Dim i As IntegerDim total, avg, rank As Double' 循环处理每个学生For i = 2 To Range("A" & Rows.Count).End(xlUp).Row ' 从第2行开始到最后一行循环' 计算总分Range("F1").Value = "https://www.itzhengshu.com/excel/总分" ' 将F1单元格的值设置为“总分”total = Application.Sum(Range("B" & i & ":E" & i)) ' 计算该行B到E列的总和Range("F" & i).Value = https://www.itzhengshu.com/excel/Format(total,"#.00") ' 将总分格式化为两位小数并赋值到F列' 计算平均分Range("G1").Value = "https://www.itzhengshu.com/excel/平均分" ' 将G1单元格的值设置为“平均分”avg = total / 4 ' 计算平均分Range("G" & i).Value = https://www.itzhengshu.com/excel/Format(avg,"#.00") ' 将平均分格式化为两位小数并赋值到G列' 计算排名Range("H1").Value = "https://www.itzhengshu.com/excel/排名" ' 将H1单元格的值设置为“排名”rank = Application.WorksheetFunction.rank(avg, Range("G$2:G#34; & Range("A" & Rows.Count).End(xlUp).Row)) ' 计算平均分在G列中的排名Range("H" & i).Value = https://www.itzhengshu.com/excel/rank' 将排名赋值到H列Next i' 按照排名升序排列F列Range("A1").CurrentRegion.Sort Key1:=Range("H2"), Order1:=xlAscending, Header:=xlYes ' 按照H列的值升序排列当前区域,即将学生信息表按照平均分的升序排列' 设置结果表格的样式With Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous ' 设置单元格边框线为连续线.Font.Name = "微软雅黑" ' 设置字体为“微软雅黑”.Font.Size = 12 ' 设置字号为12' 只修改第一行标题行的样式With Rows(1).Font.Size = 12 ' 设置字号为12.Font.Bold = True ' 设置字体加粗.Font.Name = "微软雅黑" ' 设置字体为“微软雅黑”.ColumnWidth = 10 ' 设置列宽为10End With' 修改除标题行外的单元格样式With .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).Font.Size = 10 ' 设置字号为10End WithEnd With' 选中A1单元格Range("A1").Select ' 选中A1单元格End Sub

相关经验推荐