Vlookup使用变量引用

时间:2013-01-15 12:01:32

标签: excel excel-vba excel-formula vba

我希望定义一些变量并将它们放在一个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

2 个答案:

答案 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;
}