返回工作表函数VBA中的匹配命名表

时间:2013-10-08 11:48:49

标签: excel vba excel-vba worksheet-function

有没有人知道如何使用以下内容返回表中的值:

  

WorksheetFunction.Match

或者这可以使用任何其他替代功能,以使其正常工作。

  

rowNum = WorksheetFunction.Match(sum.Range(“coverage”)。表,temp.Range(“A1:A200”),0)    'colNum = WorksheetFunction.Match(sum.Range(“Header”)。Value,temp.Range(“CoverageT”),0)

上面我尝试使用WorksheetFunction让它工作,但那是一个失败。我命名了表格的覆盖范围和'标题以使其发挥作用,但我没有成功。

我希望我的问题足够清楚,以获得一些帮助! 如果不够清楚请发表评论!

1 个答案:

答案 0 :(得分:1)

WorksheetFunction.Match可以获取单个列范围或单个行范围内值的相对位置。如果您的项目在列表中排名第三,则返回3.

如果希望表中的值使用WorksheetFunction.VLookup。您正在表格或范围的第一列中查找您的项目。您可以指定要从中获取值的列,它将从匹配的行返回单元格值。

或者将HLookup用于转置表。

如果你真的想使用Match:

,试试这个
dim KeyValue as string
KeyValue = "my item"

Dim rowNum as Variant
If Not VBA.IsError(Application.Match(KeyValue, temp.Range("A1:A200"), 0)) Then
    rowNum = Application.Match(KeyValue, temp.Range("A1:A200"), 0)
End If

如果你想要一个vlookup,试试这个:

Dim RetVal As Variant
Dim KeyValue As String 'or integer or date as appropriate
Dim LookupTable As Range
Dim ColumnNumber As Integer

KeyValue = "myItem"
LookupTable = Range("A1:A200")
ColumnNumber = 2
RetVal = WorksheetFunction.VLookup(KeyValue, LookupTable, ColumnNumber, False)