Excel VBA中的工作表函数
因此,我试图在VBA中创建一个函数,每当我在excel中为一个函数键入特定参数时,该函数将给出这些参数的结果 例如,我在一列中有一个姓名列表;约翰、简和乔伊。。。。然后在另一个专栏里,我得到了与这些名字相符的数字。。。这里的目标是让用户在任何给定的单元格中键入一个具有名称的函数,并让电子表格输出与该名称对应的数字 这就是我所拥有的,但我已经走到了死胡同,因为我不知道该做什么Excel VBA中的工作表函数,excel,vba,Excel,Vba,因此,我试图在VBA中创建一个函数,每当我在excel中为一个函数键入特定参数时,该函数将给出这些参数的结果 例如,我在一列中有一个姓名列表;约翰、简和乔伊。。。。然后在另一个专栏里,我得到了与这些名字相符的数字。。。这里的目标是让用户在任何给定的单元格中键入一个具有名称的函数,并让电子表格输出与该名称对应的数字 这就是我所拥有的,但我已经走到了死胡同,因为我不知道该做什么 Function NumberOfHits(Name As String) Dim Vegetable As String
Function NumberOfHits(Name As String)
Dim Vegetable As String
NumberOfHits = Application.WorksheetFunction.VLookup(Name, Sheets("Hits From Player").Range("B38:D74"), 3)
End Function
这对我来说很好,无论是在名为“玩家点击次数”的单子上还是单子下
RAND()
与此公式结合使用,以获得相同的效果“
=NumberOfHits(“玛丽”)
Function NumberOfHits(Name As String)
Application.Volatile
NumberOfHits = Application.WorksheetFunction.VLookup(Name, _
Sheets("Hits From Player").Range("B38:D74"), 3)
End Function
更新:若要处理不完全匹配,请尝试
+1也适用于我:)+1虽然我会在找不到匹配项时输出一个错误值,如#N/A,以与Excel样式保持一致:-)因此它对我做了与以前相同的事情,idk如果我的问题与我的工作表上有其他硬数据(不是公式)但它不断返回“#N/A”这一事实同时发生@brettdj要真正保持一致,您应该返回CVErr(xlErrNA)@brettdj smooth+1 :)
Function NumberOfHits(strName As String) As Variant
Dim StrOut
Application.Volatile
On Error Resume Next
StrOut = Application.WorksheetFunction.VLookup(strName, _
Sheets("Hits From Player").Range("B38:D74"), 3, False)
On Error GoTo 0
If IsEmpty(StrOut) Then
NumberOfHits = CVErr(xlErrNA)
Else
NumberOfHits = StrOut
End If
End Function