Excel成绩表中自动将等级转换为分数

在评分的时候,我们往往需要将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表单中双击,则会自动计算出相应的分数,见下图

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值