公式中的动态列索引名称错误

Suz*_*zie 5 excel vba vlookup dynamic-columns

我正在尝试通过使用 Vlookup 填充列来计算从图纸计划到图纸结果的组件数量,具有:

  • Count_col: 是工作表中的总列 Plan
  • Last_col: 是工作表中的总列Result(在添加列需求之前)

工作表结果

材料 成分 需求W1 需求 W2
ABCD1000 NC200 #姓名? #姓名?

图纸计划

材料 需求W1 需求 W2
ABCD1000 1000 200
    For i = 1 To count_col
        Cells(1, i + last_col).Value = "=Plan!RC[-2]"
        Cells(1, i + last_col).Offset(1, 0).Select
        ActiveCell.FormulaR1C1 = "=VLOOKUP(RC1,Plan!C1:C15,i+1,0)"
    Next i
Run Code Online (Sandbox Code Playgroud)

但结果是名称错误,我检查了函数的拼写是否正确,不知道如何修复。为什么我的公式中有“@”?

错误详情

=VLOOKUP($A2,Plan!$A:$O,@i+1,0)
Run Code Online (Sandbox Code Playgroud)

Sid*_*out 5

i+1inside""表现得像一个字符串而不是一个变量。尝试这个。

ActiveCell.FormulaR1C1 = "=VLOOKUP(RC1,Plan!C1:C15," & i + 1 & ",0)"
Run Code Online (Sandbox Code Playgroud)

也避免使用.Select. 你的代码可以写成

Cells(1, i + last_col).Offset(1, 0).FormulaR1C1 = _
"=VLOOKUP(RC1,Plan!C1:C15," & i + 1 & ",0)"
Run Code Online (Sandbox Code Playgroud)

推荐阅读:如何避免在Excel VBA中使用Select

您也正在混合R1C1A1引用风格。我建议使用其中之一。一个简单的谷歌搜索R1C1 vs A1 style将解释它们是什么。

R1C1,Plan!C1:C15需要写成Plan!R1C3:R15C3。所以你的最终代码是

Cells(1, i + last_col).Offset(1, 0).FormulaR1C1 = _
"=VLOOKUP(RC1,Plan!R1C3:R15C3," & i + 1 & ",0)"
Run Code Online (Sandbox Code Playgroud)