VBA中的工作表函数

时间:2013-12-07 22:57:35

标签: excel excel-vba vba

所以我试图在VBA中创建一个函数,每当我在excel中输入一个函数的特定参数时,它会给我这些参数的结果。

例如,我在一列中有一个名单列表; John,Jane和Joey ....然后在另一个专栏中我得到的数字与这些名称一致......这里的目标是让用户在任何给定单元格中键入一个具有名称的函数并具有电子表格输出与该名称一致的数字。

这就是我所拥有的,但我已经走到了尽头,因为我不知道该怎么做。

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

1 个答案:

答案 0 :(得分:6)

对于我来说,在Hits From Player一次

之后的工作表上和下面都​​可以正常工作
  1. 我将函数设置为volatile(以便更新)。您也可以将RAND()与此公式结合使用,以产生同样的影响。
  2. 您记得在" "

    中附上名称吗?

    =NumberOfHits("mary")

  3. Recut功能:

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

    更新:处理不完全匹配尝试

    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