VBA中的工作表函数

use*_*702 3 excel vba excel-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 
Run Code Online (Sandbox Code Playgroud)

bre*_*tdj 6

对于我来说,在Hits From Player一次调用的表单上和下面都​​可以正常工作

  1. 我使函数volatile(所以它更新).您也可以RAND()结合使用此配方产生相同的影响.
  2. 你记得附上名称" "

    =NumberOfHits("mary")

Recut功能:

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

更新:处理没有完全匹配尝试

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
Run Code Online (Sandbox Code Playgroud)