在评分的时候,我们往往需要将A、B、C、......等级转换为对应的分数,下表是一个例子
做成绩册转换的时候我们要对比某学生的等级然后输入相应的分数,比如A等为90分,在分数栏中输入90。如果全部用手工转换很麻烦的,也可以用excel 的函数来解决,这里提供了一个用VBA实现自动转换分数的例子,扩展性很好。
首先我们建立两张表:成绩表(名称为Sheet1)和转换标准表(名称为standard),如下图所示
转换标准表中给出了等级对应的分数,根据情况可以设置为你想要的等级和分数
在工作簿底部的Sheet1上右键点击弹出对话框选择“查看代码”
打开VBA编辑器,在编辑器中的第一个下拉列表中选择Worksheet,在第二个下拉列表中选择BeforeDoubleClick(意思是双击会执行这段代码)
在程序Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)中输入下列代码:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
TotalNum = 20 '学生总数
StartNum = 2 '开始行号
GradeColumn = 5 '等级列
ScoreColumn = 6 '分数列,这列的分数将自动计算
StdGradeColumn = 1 'standard中的等级列
StdScoreColumn = 2 'standard中的等级对应的分数列
GradeNumber = 10 'standard中的等级个数,自己可以任意设置多个等级
For i = StartNum To TotalNum + StartNum - 1
Set std = Worksheets("Sheet1").Cells(i, GradeColumn)
For j = 2 To GradeNumber + 1
SelectI = 1
Set Table = Worksheets("standard").Cells(j, StdGradeColumn)
If StrComp(std.Value, Table.Value, 1) = 0 Then '比较文本
SelectI = j
Exit For
End If
Next j
Worksheets("Sheet1").Cells(i, ScoreColumn) = Worksheets("standard").Cells(SelectI, StdScoreColumn)
Next i
End Sub
其中
TotalNum = 11 '学生总数
StartNum = 2 '开始行号
GradeColumn = 5 '等级列
ScoreColumn = 6 '分数列,这列的分数将自动计算
StdGradeColumn = 1 'standard中的等级列
StdScoreColumn = 2 'standard中的等级对应的分数列
GradeNumber = 10 'standard中的等级个数,自己可以任意设置多个等级
这些参数需要根据Sheet1和standard两个表单来设置
输入代码后如下图所示:
保存代码,然后在Sheet1表单中双击,则会自动计算出相应的分数,见下图