我试图编写一个简单的Excel VBA函数来从给定单元格中取一个数字并指定一个等级,然后在当前活动单元格中写入该值。
Public Function Grade(rng As Range)
Dim number As Double
number = rng.Value
If number >= 75 Then
ActiveCell.Value = "A"
ElseIf number >= 60 Then
ActiveCell.Value = "B"
ElseIf number >= 50 Then
ActiveCell.Value = "C"
ElseIf number >= 45 Then
ActiveCell.Value = "D"
ElseIf number < 45 Then
ActiveCell.Value = "F"
End If
End Function
致电&#39; =等级(A2)&#39;在Excel中我收到错误消息 有一个或多个循环引用,其中公式直接或间接引用其自己的单元格。
我错过了什么?
答案 0 :(得分:3)
您不执行功能操作。你不应该尝试修改单元格或任何东西。 (在您的代码中,每次重新计算函数时,它都会修改您选择的任何单元格。)
您只需将值设置为函数,就好像它是变量一样。代码完成后,它会将函数的值返回到调用它的任何值。该功能可用于Excel公式和VBA。
Public Function Grade(rng As Range)
Dim number As Double
number = rng.Value
If number >= 75 Then
Grade = "A"
ElseIf number >= 60 Then
Grade = "B"
ElseIf number >= 50 Then
Grade = "C"
ElseIf number >= 45 Then
Grade = "D"
ElseIf number < 45 Then
Grade = "F"
End If
End Function
答案 1 :(得分:1)
Excel公式替代方案以防万一:
=LookUp(A1,{0,45,50,60,75;"F","D","C","B","A"})
=Char(71-Match(A1,{0,45,45,50,60,75}))
=Mid("FFFFFFFFDCCBBBAAAAAA",A1/5,1)