我正在编写一个函数,我需要函数来引用它所在的单元格偏移量。我有每行包含一个特定变量的数据行。函数位于最后一列,并且应该检查其中定义的每个变量是否与其前面的行中的变量匹配。每个匹配应该为该函数的最终值得+1。这是我的功能的简短版本。
Public Function cellscore(testvar1)
totalscore = 0
If testvar1= activecell.Offset(-1, -10) Then
cellscore = totalscore + 1
End If
End Function
我用什么代替activecell,以便函数对我拥有的每一行数据都正确运行?
我是VBA的新手,如果这是一个简单的问题,请耐心等待。提前谢谢。
答案 0 :(得分:0)
最简单的方法是将数值传递给表示行号的函数。这意味着您的代码将变为:
Public Function cellscore(testvar1,RowNum as Long)
totalscore = 0
If testvar1= Range("SOMECELL").Offset(RowNum-2, -10) Then
cellscore = totalscore + 1
End If
End Function
您需要更改 SOMECELL 以表示第一行中的单元格。例如,如果您的公式位于 T 列中,那么您可以将 SOMECELL 替换为 T1 。
现在,聪明的部分是如何调用工作表中的函数。您可以使用以下公式执行此操作:
=cellscore(SOMEVALUE,ROW())
显然将 SOMEVALUE 替换为您要测试的值。现在无论放置这个公式的哪一行,它都会在调用函数时引用当前的公式。希望这有帮助!