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

Dynamic Column Index Name Error in Formula

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

Sheet 结果

Material 组件 需求 W1 需求 W2
ABCD1000 nc200 #NAME? #NAME?

Sheet 计划

Material 需求 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

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

错误详情

=VLOOKUP($A2,Plan!$A:$O,@i+1,0)

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

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

同时避免使用.Select。你的代码可以写成

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

推荐阅读:How to avoid using Select in Excel VBA

您还混合了 R1C1A1 引用风格。我建议使用其中之一。一个简单的 Google 搜索 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)"