首页 > 解决方案 > 我的 VBA Vlookup 返回 N/A。我究竟做错了什么?

问题描述

所以我有一个预先组装的列表,我现在正试图从我拥有的另一个工作簿中添加更多到列表中。我想我可以使用 VBA 创建一个宏来执行 VLookup 来检索和填充添加的字段。

我的 VBA:

Option Explicit
Sub CompareUntimed()
    Dim wb As Workbook
    Dim utsheet As Worksheet
    Dim utlastrow, f9lastrow, J As Long
    Dim f9sheet As Worksheet
    Dim ctr As Integer
    Set wb = Workbooks.Open(get_user_specified_filepath())
    Set utsheet = wb.Sheets(2)
    utlastrow = utsheet.Cells(Rows.Count, "A").End(xlUp).Row
    Set f9sheet = ThisWorkbook.Sheets("Part List")
    f9lastrow = f9sheet.Cells(Rows.Count, "A").End(xlUp).Row
    For J = 2 To f9lastrow
        f9sheet.Range("G" & J) = Application.VLookup(f9sheet.Range("H" & f9lastrow), utsheet.Range("S2:S" & utlastrow), 17, False)
        f9sheet.Range("F" & J) = Application.VLookup(f9sheet.Range("H" & f9lastrow), utsheet.Range("S2:S" & utlastow), 10, False)
    Next J
End Sub

这是我得到#N/A 而不是正确值的工作簿 在此处输入图像描述

这是我试图匹配并从中获取值的工作簿 在此处输入图像描述

我正在尝试使用我创建的 UniqueID 列,这是每个工作簿中的最后一列,并且我正在尝试将日期和按列修改的列添加到我的新工作簿中。

标签: excelvba

解决方案


Sub CompareUntimed()
    Dim wb As Workbook
    Dim utsheet As Worksheet
    Dim utlastrow, f9lastrow, J As Long
    Dim f9sheet As Worksheet
    Dim ctr As Long

    Set wb = Workbooks.Open(get_user_specified_filepath())
    Set utsheet = wb.Sheets(2)

    Set f9sheet = ThisWorkbook.Sheets("Part List")
    f9lastrow = f9sheet.Cells(Rows.Count, "A").End(xlUp).Row

    For J = 2 To f9lastrow
        m = Application.Match(f9sheet.Range("H" & J), utsheet.Columns("S"), 0)
        If Not IsError(m) Then
            f9sheet.Range("G" & J).Value = utsheet.Cells(m, "K").Value
            f9sheet.Range("F" & J).Value = utsheet.Cells(m, "R").Value
        Else
            f9sheet.Range("F" & J).Resize(1,2).Value = "???"
        End If
    Next J
End Sub

推荐阅读