Excel VBA循环函数始终返回1

Excel VBA循环函数始终返回1,excel,vba,Excel,Vba,这是我的函数,我想创建一个函数来计算数字的排名,但它在排名中总是返回1。如何修复,并在开始前添加“N/A” Function Ranking(Score As Double) As Integer Dim count As Integer Range("C6").Value = "N/A" Ranking = 1 For count = 1 To num_of_students If student_records(count,

这是我的函数,我想创建一个函数来计算数字的排名,但它在排名中总是返回1。如何修复,并在开始前添加“N/A”

Function Ranking(Score As Double) As Integer

    Dim count As Integer

    Range("C6").Value = "N/A"
    Ranking = 1      

    For count = 1 To num_of_students
        If student_records(count, 3) > Score Then
            Ranking = Ranking + 1      
        Else   
            Exit For
        End If
    Next

    Range("C6").Value = Ranking

End Function

您的
退出
意味着您在带有score Excel自己的
RANK()
函数的记录执行相同的任务时,即停止循环,无论是在工作表上还是在VBA函数中。如果您的意思是
学生记录(计数,3).Value
您将发现使用准确表达您意思的语法是有利的,无论是早是晚。如果
范围(“C6”)
在学生记录选项卡上,则循环将无法将“N/A”与
分数进行比较。此函数不能作为UDF使用,因为UDF不能更改它不驻留的单元格的值。如果要从工作表调用函数,请注意
Range(“C6”)
将在
ActiveSheet
上更改,这意味着您查看或上次查看的工作表。非常危险。首先,我要重构它,并从函数中删除范围(“C6”)。第二,创建一个名为localRanking的单独变量,并增加它而不是Ranking,因为这是函数本身。在“Next”之后,通过调用Ranking=localRanking从函数返回localRanking。如果你绝对想从这个函数初始化你的单元格并设置它的值,我仍然会使用我建议的方法,但我不想麻烦使用一个函数,而只是把它改成一个方法。学生人数和学生记录是全局变量吗?如果是,价值是什么?