Excel VBA中的工作表函数

Excel VBA中的工作表函数,excel,vba,Excel,Vba,因此,我试图在VBA中创建一个函数,每当我在excel中为一个函数键入特定参数时,该函数将给出这些参数的结果 例如,我在一列中有一个姓名列表;约翰、简和乔伊。。。。然后在另一个专栏里,我得到了与这些名字相符的数字。。。这里的目标是让用户在任何给定的单元格中键入一个具有名称的函数,并让电子表格输出与该名称对应的数字 这就是我所拥有的,但我已经走到了死胡同,因为我不知道该做什么 Function NumberOfHits(Name As String) Dim Vegetable As String

因此,我试图在VBA中创建一个函数,每当我在excel中为一个函数键入特定参数时,该函数将给出这些参数的结果

例如,我在一列中有一个姓名列表;约翰、简和乔伊。。。。然后在另一个专栏里,我得到了与这些名字相符的数字。。。这里的目标是让用户在任何给定的单元格中键入一个具有名称的函数,并让电子表格输出与该名称对应的数字

这就是我所拥有的,但我已经走到了死胡同,因为我不知道该做什么

Function NumberOfHits(Name As String)
Dim Vegetable As String 
NumberOfHits = Application.WorksheetFunction.VLookup(Name, Sheets("Hits From Player").Range("B38:D74"), 3)  
End Function 

这对我来说很好,无论是在名为“玩家点击次数”的单子上还是单子下

  • 我将函数设置为volatile(以便更新)。您还可以将
    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