我正在尝试在VBA中使用WorksheetFunction.Match,但是我在填充lookup_array参数时遇到了问题。对于lookup_array,我使用另一个函数-GetSubRange()的输出作为Range - 返回一个范围。 我已经验证我的WorksheetFunction.Match()语法有效,并且我的GetSubRange()函数也可以工作 - 当编码方式不同时,我可以获取地址,选择它等等。
结果是该函数返回一个#VALUE!错误,我得出的结论是lookup_array参数没有正确引用范围输入。
有什么想法吗?
这是我正在尝试做的事情:
Function GetValue(rng As Range, colName As String, key As String) As String
Dim rngSubRange As Range
Set rngSubRange = GetSubRange(rng, colName)
GetValue = WorksheetFunction.Match(key, rngSubRange, 0)
End Function
Function GetSubRange(rng As Range, colName As String) As Range
Dim rngHeader As Range
Dim colNum As Integer
Set rngHeader = ThisWorkbook.Names(rng.Name.Name &"_Header").RefersToRange
colNum = Application.Match(colName, rngHeader, 0)
Set GetSubRange = rng.Columns(colNum)
End Function
答案 0 :(得分:0)
错误在算法中:我在错误的子范围内搜索。 rngSubRange获取了值列的范围,但关键是在另一列中。我必须创建子范围:一个用于键列,另一个用于值列。