[英]vlookup with dynamic lookup_value using VBA?
我是使用动态查找值的新手,我尝试遵循如何使用VBA与动态lookup_value一起执行excel vlookup的建议。 从另一个工作簿动态获取值。
下面的代码抛出#Name?
错误。
请求您的帮助以解决该错误。
代码摘录 :
Dim ws As Worksheet
Dim dynamic_lookup_value As Range
Dim LocationRef As Range
Set ws = ActiveWorkbook.Worksheets("XYZ")
Set dynamic_lookup_value = ws.Cells(2, 1)
ActiveWorkbook.Names.Add Name:="dynamic_lookup_value", RefersTo:=Worksheets("XYZ").Cells(2, 1)
Set LocationRef = ws.Cells(2, ActiveColumn)
ActiveCell.FormulaR1C1 = _
"=IFERROR(VLOOKUP(" & dynamic_lookup_value.Address(0, 0) & ",'[ABC.xlsx]XYZ'!C1:C26,MATCH(""Location Description"",'[ABC.xlsx]XYZ'!R1C1:R1C26,0),)," & LocationRef.Address(0, 0) & ")"
执行后,公式显示为
=IFERROR(VLOOKUP('A2','[HC report.xlsx]HC Report'!$A:$Z,MATCH("Location Description",'[HC report.xlsx]HC Report'!$A$1:$Z$1,0),),'G2')
请注意,查找值显示为“ A2”(带单个代码)。 试图使用以下代码来声明dynamic_lookup_value
,但徒劳无功。
ActiveWorkbook.Names.Add Name:="dynamic_lookup_value", RefersTo:=Worksheets("XYZ").Cells(2, 1)
如果我在A2和G2之前和之后手动删除Singe代码,则该公式可以正常工作。
要求专家建议解决此问题。
非常感谢,Prabhu
新的答案:能够复制您的错误,我想我有一个解决方案:用ActiveCell.FormulaR1C1
替换您的ActiveCell.Formula
。 这通过我对问题的简单重新创建(使用即时窗口)解决了
这有效(根据单元格A1的地址设置对单元格A2中单元格A1的引用: Cells(2,2).Formula = "="&Cells(1,1).Address(0,0)
虽然这不起作用(单引号中的'A1'与您遇到的问题相同): Cells(2,2).FormulaR1C1 = "="&Cells(1,1).Address(0,0)
我认为VBA中的命名范围和范围变量之间可能会有一些混淆。 但是,公式中的一个问题是应用程序或RC表示法不一致,因此您需要
ActiveCell.FormulaR1C1 = _
"=IFERROR(VLOOKUP(" & dynamic_lookup_value.Address(0, 0, xlR1C1) & ",XYZ!C1:C26,MATCH(""Location Description"",XYZ!R1C1:R1C26,0),)," & LocationRef.Address(0, 0, xlR1C1) & ")"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.