我希望定义一些变量并将它们放在一个vlookup公式中。我在下面概述了我正在努力实现的一个简单示例。但是我一直收到'438'错误消息。
我已经放入了没有变量的原始vlookup,并且带有变量的vlookup不起作用。任何输入将不胜感激。我相信我已经正确定义了变量,但我认为这与我在公式中调用它们的方式有关。
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
答案 0 :(得分:3)
问题是,您确实可以通过Excel.WorksheetFunction.
结构在VBA代码中使用任何Excel函数,并使用变量获得正确的结果。
但是,对于代码ActiveCell.FormulaR1C1 = "=VLOOKUP(Lookupcolumn,'CS Primeview'columnletter_start:columnletter_End,3,FALSE)"
,您尝试在VLOOKUP
中使用范围对象作为参考,但Excel将有效引用理解为A1
或命名区域
作为解决方案,尝试在代码中生成A1
- 类似的参数。对于整个列A:A
将会去。祝你好运!
P.S。还有一件事我注意到:'CS Primeview'columnletter_start:columnletter_End
- 对于这一部分,你似乎在引用之前错过了感叹号,以及连接部分的双引号,即"'CS Primeview'!" & columnletter_start & ":" & columnletter_End
应该是正确的。
答案 1 :(得分:0)
下面允许您定义一个可变单元格引用,然后将其转换为.formula方式可读的格式。这是一个使用变量的vlookup的简单方法,因为您可以在excel中编写公式,然后将它们复制/粘贴到代码中,只需更改查找值。这对索引/匹配也很有效。
nav.navbar {
margin: 0;
border-radius: 0;
}
.navbar {
background-color: #00560C;
color: #FFF;
}
.navbar li {
padding-left: 100px;
}
.navbar li a {
color: #FFF;
}
.navbar li a:hover {
background-color: red;
}