Excel UDF for VLOOKUP(MATCH())使用结构化表引用

时间:2012-07-17 05:23:01

标签: excel-vba user-defined-functions vba excel

我正在尝试构建一个可以实现的Excel用户定义函数VLOOKUP_NAME(value, table, column_name)

VLOOKUP(value, table, MATCH(column_name, table[#Headers], FALSE), FALSE)

如何在VBA中执行此操作? VBA似乎不接受像table[#Headers]这样的结构化引用。

另外,我也有兴趣了解将其作为UDF实现的性能影响。

另外,我这样做的原因是用更易读的公式替换大量丑陋的公式。其他更好的建议是值得欢迎的。

1 个答案:

答案 0 :(得分:2)

我不熟悉该结构化参考语法,但您是否尝试过构建公式并使用工作表Evaluate()方法?

这是一个简单的例子:

Function TestEval(s1 As String, s2 As String)
    TestEval = Application.Caller.Parent.Evaluate(s1 & "/" & s2)
End Function

编辑:在检查完整个结构化表格之后,这似乎有效:

Function TableLookup(val, tbl As Range, colName As String)
    Dim indx, rv
    indx = Application.Match(colName, tbl.Rows(1).Offset(-1, 0), 0)

    If Not IsError(indx) Then
        rv = Application.VLookup(val, tbl, indx, False)
        TableLookup = IIf(IsError(rv), "Not found", rv)
    Else
        TableLookup = "Col??"
    End If
End Function
相关问题