比对功能找不到资料

时间:2019-02-07 20:27:20

标签: excel vba

我有下面的代码,由于某种原因,匹配功能未返回行号。匹配的目的是在联系表,列ID中找到行号,并在索引中使用该行号,并从“联系表”,“列上次审阅”中获取数据(日期)。数据流是这样的:

  1. 一张包含数据的表在一页上。
  2. 从数据表中创建数据透视表,并使用vlookup函数在工作簿中用其他表中的数据重新组织数据。数据透视表只有一列。
  3. 使用变量表中的名称和Contact表中的相应信息找到的名为IDNum的变量之一,用于匹配函数中,以查找Contact表中的行。

现在,当程序运行时,此处的match函数永远不会在IDNum列中找到匹配项。如果我输入Match excel函数,则效果很好。该函数是这样的:INDEX(Contact [Last Review],MATCH(B7,Contact [ID],0),0)。 B7是VBA代码中的IDNum。

我认为也许表中的数据或如何定义变量可能是一个问题,但这很奇怪,因为IDNum中的数据与最初从Contact表中提取的数据相同。

excel文档上的数据为常规格式。 IDNum在VBA代码中定义为字符串,并且是全局变量。 IDNum变量提取正确的信息。

是否还有其他方法可以检查变量IDNum中的数据是否与Match所要查找的数据集不同?如何检查match函数中的表列是否正确?我还有什么其他东西可以尝试解决这个问题?

Private Function TryGetRevisionDate(ByVal ID As String, ByRef outResult As Date) As Boolean
    On Error GoTo CleanFail

    With Application.WorksheetFunction
        Dim matchRow As Long
        matchRow = .Match(IDNum, Contact.ListColumns("ID").DataBodyRange, 0)

        Dim indexValue As Variant
        indexValue = .Index(Contact.ListColumns("Last Review").DataBodyRange, matchRow)
    End With

    If IsDate(indexValue) Then outResult = indexValue
    TryGetRevisionDate = True

CleanExit:
    Exit Function

CleanFail:
    'lookup failed
    Resume CleanExit
End Function

0 个答案:

没有答案