【问题标题】:Worksheet function in VBAVBA中的工作表函数
【发布时间】:2013-12-25 05:05:18
【问题描述】:

所以我试图在 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 

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    这对我来说无论在表上还是表外都很好用,称为 Hits From Player 一次

    1. 我将函数设置为 volatile(以便它更新)。您还可以将RAND() 与此公式结合使用,以获得相同的效果。
    2. 你记得在" "中加上name

      =NumberOfHits("mary")

    剪辑功能:

    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
    

    【讨论】:

    • + 1 也适合我 :)
    • +1 虽然我会在找不到匹配项时输出错误值,例如 #N/A,以与 Excel 样式保持一致:-)
    • 所以它为我做了和以前一样的事情,如果我的问题与我的工作表上有其他硬数据(不是公式)但它保持一致返回“#N/A”
    • @brettdj 要真正保持一致,您应该返回 CVErr(xlErrNA)
    • @brettdj 顺利... +1 :)
    猜你喜欢
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多