【问题标题】:VBA Vlookup where Lookup_value column number is specifies指定 Lookup_value 列号的 VBA Vlookup
【发布时间】:2016-01-18 16:44:57
【问题描述】:

我目前正在编写包含 Vlookup 的 VBA 代码。我现在的代码是这样的:

ActiveCell.FormulaR1C1 = _ "=VLOOKUP(RC[-7],'[Equities EMIR New.xlsx]Valuation Summary'!R2C4:R100C5,1,FALSE)"

我遇到的问题是,每次运行时,Vlookup 都会在新插入的列中的单元格中。因此,一旦宏运行了多次,使用 RC[-7] 作为查找值将不起作用。

查找值将保留在同一单元格 (A3) 中,但是当我尝试将 RC[-7] 替换为 A3 时,我得到一个 #NAME?错误。

我已经找了好几天了,找不到解决办法,有人能帮忙吗?

谢谢。

【问题讨论】:

  • 将整个公式转换为仅使用 .Formula 属性而不是 .FormulaR1C1 属性 (msdn.microsoft.com/en-us/library/office/…)
  • 使用 R3C1(第 3 行,第 1 列) - 它是对 R1C1 格式的单元格 A3 的绝对引用。

标签: vba excel vlookup


【解决方案1】:

这会解决你的问题

ActiveCell.FormulaR1C1 = _ "=VLOOKUP(R3C1,'[Equities EMIRNew.xlsx]Valuation Summary'!R2C4:R100C5,1,FALSE)"

请记住,在 VBA 中使用 .FormulaR1C1 时要使用 R1C1 格式作为参考。

【讨论】:

    【解决方案2】:

    有一个快速而肮脏的解决方案可以解决您的问题。 这个想法是 FormulaR1C1 需要一个字符串,因此您应该每次将 l_counter 缩进 -1。

    Public Sub vlookup()
    
    Dim l_counter As Long: l_counter = 7
    'your loops here
        l_counter = l_counter - 1
        ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-" & l_counter & "],'[Equities EMIR New.xlsx]Valuation Summary'!R2C4:R100C5,1,FALSE)"
     'your loops here
     End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      相关资源
      最近更新 更多