VBA和案例,根据范围内的值分配值

时间:2013-01-20 20:10:23

标签: vba excel-vba excel

我的学生成绩和熟练程度。

例如,对于五年级,有四个级别的熟练程度。四个级别的熟练程度对应于字母表中的字母,因此如果五年级学生得到B的字母分配,那么他的熟练程度将是“低于精通”,因为对于A到R中的任何字母将达到“低于精通”的水平“我想知道如何处理案件,

我对代码的粗略概念如下:

Function ConvertScores(Grade, Letter_Score)
Select Case ConvertScore(5, like "[A-R]")
    Case ConvertScore(5, like" 
        ConvertScores = "F & P Remedial"
    Case 2
        ConvertScores = "F & P Below Proficient"
    Case 3
        ConvertScores = "F & P Proficient"
    Case 4
        ConvertScores = "F & P Advanced"



End Function

所以,是的,我希望VBA有一个列表对象,VBA中的列表对象是什么?

编辑:我能用多个If语句做到这一点,但在我看来,案例本来是一个更好的方法。

这是我想用于案例而不是多个if-thens

的代码
Function ConvertScoresMOY(Grade, Letter_Score) As String
If Grade = "5" And Letter_Score Like "[A-R]" Then
    ConvertScoresMOY = "F & P Remedial"
ElseIf Grade = "5" And Letter_Score Like "[S-T]" Then
    ConvertScoresMOY = "F & P Below Proficient"
ElseIf Grade = "5" And Letter_Score Like "[U-V]" Then
    ConvertScoresMOY = "F & P Proficient"
ElseIf Grade = "5" And Letter_Score Like "[W-Z]" Then
    ConvertScoresMOY = "F & P Advanced"
Else:
End If
End Function

2 个答案:

答案 0 :(得分:2)

让我们从一个简单条件中插入所有条件开始:

If Grade = "5" Then

End If

然后你可以使用SWITCH CASE:

 Select Case Letter_Score
       Case Letter_Score Like "[A-R]"
             ConvertScoresMOY = "F & P Remedial"
       Case val Letter_Score Like "[S-T]"
             ConvertScoresMOY = "F & P Below Proficient"
 End Select

答案 1 :(得分:1)

您可以在另一个工作表中创建字典,然后使用VLOOKUP()函数在第一列上搜索值,并在第二列上获取值。