首页 > 解决方案 > VBA:使用具有动态查找值的 VLOOKUP 公式

问题描述

在对工作表执行格式化后,我试图将 VLOOKUP 公式嵌入到我的最后一列中。我的查找值适用于具有以下列标题的列:“公司状态”。这是我目前的流程:

  1. 使用列标题查找列号:“公司状态”:

    CompanyStateColumnNumber = WorksheetFunction.Match("Company State", ws.Range("1:1"), 0)

  2. 声明查找范围。在这种情况下,它存在于不是活动工作簿/工作表的工作表/工作簿中。因此,我使用(我已经将 TZsrcRange 声明为 Range 类型)引用它:

    Set TZsrchRange = TemplateWS.Range("A:C")

  3. 现在,我正在尝试将 vlookup 嵌入到我的最后一列(我在工作表中找到了我的最后一列,它存储在变量“NewestLCol”中。我想将它嵌入到列中,直到最后一行(存储在变量中) “最后一行”):

    For x = 2 To LastRow
        Set dynamic_lookup_value = Cells(x, CompanyStateColumnNumber)
        Cells(x, NewestLCol).Formula = " =VLOOKUP(" & _
               dynamic_lookup_value.Address(0, 0) & _
             ", Templatews.Range(A:C).Address(0,0),3, FALSE)" 
    Next x
    
  4. 现在,当我运行它时,它没有嵌入公式,也没有给我一个值。我的问题可能是什么?

标签: excelvbavlookup

解决方案


尝试用这个替换你的公式分配

Cells(x, NewestLCol).Formula = "=VLOOKUP(" & _
                                dynamic_lookup_value.Address(0, 0) & _
                                "," & _
                                TZsrchRange.Address(External:=True) & _
                                ",3, FALSE)"

推荐阅读