VBA VLOOKUP 公式,用于引用另一张工作表中的动态范围

VBA VLOOKUP formula to refer to a dynamic range in another sheet

提问人:TheEndUK 提问时间:3/18/2022 更新时间:3/18/2022 访问量:337

问:

VBA VLOOKUP 公式,用于引用另一张工作表中的动态范围

晉語 我正在尝试将 VLOOKUP 公式合并到一个名为“RESULTS”的工作表中,并通过 VBA 在另一个名为“DATA”的工作表中引用动态数据范围 - 我拥有的公式工作正常,但它不是动态的,并且我并非无法在宏中复制它,因此,鉴于我有限的 VBA 技能, 我碰了一堵砖墙,所以任何建议和指导将不胜感激。

这是我想复制用于宏的公式,但如前所述,它是一个固定范围,我需要它是动态的:

=IF(IFERROR(VLOOKUP(A2,IF({1,0},DATA!$C$5:$C$20000,DATA!$B$5:$B$20000),2,0),“”)=0,“”,IFERROR(VLOOKUP(A2,IF({1,0},DATA!$C$5:$C$20000,DATA!$B$5:$B$20000),2,0),“”))

这是我写的 VBA - 只是 VLOOKUP 公式不起作用,COUNTIFS 公式工作正常。

Sub DATA_Report()
        
    'Add in formulae
    Dim DataLastRow As Long
    Dim ResultsLastRow As Long

    'Determine last row of DATA Scheme Information sheet
     With Sheets("DATA")
        DataLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    End With
    
    'Determine last row in col B for RESULTS sheet - Add in formula - MEMBER REFERENCE
    With Sheets("RESULTS")
    ResultsLastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
        'The following formula is not working
        .Range("G2:G" & .Cells(.Rows.Count, "A").End(xlUp).Row).FormulaR1C1 = "=IF(IFERROR(VLOOKUP(RC[-6],IF({1,0}," & "DATA!R5C3:R" & DataLastRow & ",DATA!R5C2:R" & DataLastRow & "),2,0)," & """"")=0," & """""," & "IFERROR(VLOOKUP(RC[-6],IF({1,0}," & "DATA!R5C3:R" & DataLastRow & ",DATA!R5C2:R" & DataLastRow & "),2,0),""""))"
        'The following COUNTIFS formula works fine
        .Range("H2:AA" & ResultsLastRow).FormulaR1C1 = "=IF(COUNTIFS(DATA!R5C2:R" & DataLastRow & "C2,RC7,DATA!R5C1:R" & DataLastRow & "C1,R1C)>0,""Yes"","""")"
    End With
End Sub

提前非常感谢, TE公司

VBA Excel-公式 vlookup

评论

1赞 Darrell H 3/18/2022
当你说“不起作用”时,你的意思是你得到了一个错误,或者你没有得到你想要的结果?如果出现错误,错误是什么?
1赞 Edoardo Berardo 3/18/2022
我认为您可以按以下方式直接使用“OFFSET”和“COUNTA”功能来完成:youtube.com/watch?v=BtxiQM416u0
0赞 TheEndUK 3/18/2022
嗨,@darrell-h - 感谢您的回复 - 回答您的问题,公式没有错误,我没有得到我想要的结果 - 我将修改我的帖子以显示通过 VBA 生成的结果公式。再次致谢 - TE
0赞 TheEndUK 3/18/2022
嗨,@edoardo-berardo - 感谢您提供 YouTube 链接 - 我会将其添加为书签,因为它在另一个项目中非常有用。但是,在这种情况下,我确实需要 VBA 来实现此目的,因为该公式只是一个更大的宏的一个缩部分,该宏构建一个从同一工作簿中的许多其他报告中包含的数据编译的报表。我的目标是通过运行这个宏来构建编译的报告,而 VLOOKUP 公式是我剩下的最后一个绊脚石。再次感谢和最亲切的问候,TE

答: 暂无答案