使用variables引用的Vlookup

我希望能够定义一些variables,并把它们放在一个查找公式中。 我在下面概述了一个我想要实现的简单例子。 但是我不断收到'438'的错误信息。

我已经把原始的vlookup没有variables和variables的查找与不工作。 任何input将不胜感激。 我相信我有正确定义的variables,但我认为这与我在公式中调用它们的方式有关。

Sub Macro1() Dim Lookupcolumn As Range Dim columnletter_start As String Dim columnletter_End As String columnletter_start = ActiveCell.offfet(0, 1).Value columnletter_End = ActiveCell.offfet(0, 2).Value Set Lookupcolumn = Sheets("Pricing Analysis").Cells.Find(What:="Cusip", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False) 'ActiveCell.FormulaR1C1 = "=VLOOKUP(R[1]C[-8],'CS Primeview'!C[-6]:C[-4],3,FALSE)" ActiveCell.FormulaR1C1 = "=VLOOKUP(Lookupcolumn,'CS Primeview'columnletter_start:columnletter_End,3,FALSE)" End Sub 

问题是,您可以通过Excel.WorksheetFunction.在您的VBA代码中使用任何Excel函数Excel.WorksheetFunction. 结构并使用variables获得正确的结果。 但是,对于您的代码ActiveCell.FormulaR1C1 = "=VLOOKUP(Lookupcolumn,'CS Primeview'columnletter_start:columnletter_End,3,FALSE)"您尝试使用Range对象作为VLOOKUP引用,但Excel理解为参数只有有效的引用为A1或命名区域。

作为解决scheme,尝试在代码中生成A1类似的参数。 整个专栏A:A会去。 祝你好运!

PS还有一件事我注意到: 'CS Primeview'columnletter_start:columnletter_End – 对于这部分,你似乎在参考之前错过了感叹号,还有双引号来连接部分,即"'CS Primeview'!" & columnletter_start & ":" & columnletter_End "'CS Primeview'!" & columnletter_start & ":" & columnletter_End应该是正确的。

下面的代码可以让你定义一个variables单元格的引用,然后把它转换成一个可以用.formula方式读取的格式。 这是一个简单的方法来查看一个variables,因为你可以在Excel中编写公式,然后将它们复制/粘贴到代码中,只需更改查找值即可。 这对于索引/匹配也可以很好地工作。

 lookup_value = Cells(defined_row,defined_column).Address(False,False) lookup_value = Replace(lookup_value, "", "") ActiveCell.Formula = "VLOOKUP($" & lookup_value & ",'Sheet1'!$A:$B,2,0)"