具有可变查找值,可变查找范围VBA的已过滤范围中的Vlookup

时间:2020-08-27 12:11:11

标签: excel vba

我正在尝试将Vlookup应用于具有可变查找值(根据行号更改)和可变查找范围(来自用户浏览的工作簿)的筛选范围。但是,运行代码后的公式栏将公式显示为:-

=IFERROR(VLOOKUP(@Sri Lanka15-@a_One-@Time Base Rent,'[C_Rent Report_25082020.xlsx]Sheet 1'!$J$1:$N$968,4,0)," ")

我不确定这些“ @”符号来自何处。该特定行的查找值为:-Sri Lanka15-a_One-Time Base Rent。

下面是代码:-

    Dim LR As Long   ' Defined as Last row in source file
    Dim nlr As Long   'Defined as Last row in Macro Workbook where vlookup is applied
    Dim Filename As String
    Filename = Application.GetOpenFilename(FileFilter:="All Files(*.xls; *.xlsx; *.csv),*xls,*.xlsx, *csv", Title:="Select File To Be Opened")
    Workbooks.Open Filename:=Filename
    sourcefile = Dir(Filename)
    With ActiveSheet
       Range("A1:AQ" & nlr).AutoFilter Field:=25, Criteria1:="One-Time Base Rent"
       For Each cell In Range("AA2:AA" & nlr).SpecialCells(xlCellTypeVisible)
            lookupvalue = Cells(cell.Row, "Z").Value
            cell.Formula = "=IFERROR(VLOOKUP(" & lookupvalue & ",'[" & sourcefile & "]Sheet 1'!$J$1:$N$" & LR & ",4,0),"" "")"    ' The problem seems to be here in lookup value as rest are appearing as fine in formula
       Next
             
    End With

因为我需要在此之后应用后续过滤器。我想将查找值保留为变量。

我也尝试了WorksheetFunction.Vlookup,但是我不确定如何从用户在worksheetfunction中选择的文件中定义范围

任何帮助都倍受赞赏!! 谢谢

1 个答案:

答案 0 :(得分:1)

请尝试替换

cell.Formula = "=IFERROR(VLOOKUP(" & lookupvalue & ",'[" & sourcefile & "]Sheet 1'!$J$1:$N$" & LR & ",4,0),"" "")" 

使用

cell.Formula = "=IFERROR(VLOOKUP(" & cells(cell.Row, "Z").Address & ",'[" & sourceFile & "]Sheet 1'!$J$1:$N$" & lr & ",4,0),"" "")"