Excel VBA 用于具有相对单元格引用的循环公式



我正在尝试从单元格"B2"开始,输入一个公式,该公式将单元格放在"B2"的左侧,即"A2",乘以另一张纸上的数字。

我的问题是...如何引用左侧的单元格?还有,如何引用另一张纸上的单元格?我很确定这将是相同的答案,但我无法弄清楚。

Sub RelFormula()
For Col = 1 To 2
    For Row = 2 To 6
        Cells(Row, Col).Formula = "=" & Cells.Offset(0, -1).Value & "*" worksheets("output").range("A1")
    Next Row
Next Col
End Sub
不需要

offset,你可以从Cells的列参数中-1。正如注释指出的那样,您还错过了公式中使用的Cells的行和列参数,即最终&

此外,使用关键字或保留字作为变量是一个非常糟糕的主意。有些名称是受保护的,如果某些单词用作变量名称,VBA 将根本不编译/运行 - 但对于像"Row"这样的东西,它们在 VBA 中的其他地方使用......它自找麻烦(即不推荐/不良做法等),并且阅读/调试等会令人困惑。

此外,请考虑在任何代码模块的顶部使用 Option Explicit(如果尚未使用)。如果您没有定义所有变量,这将使 VBA 抱怨/停止。对于初学者来说,这可能会令人沮丧 - 但从长远来看是值得的。

我已经重写了您的代码,从表面上看,重命名和定义变量。从技术上讲,您不需要双精度(外部)循环(c_loop只需要一个值):

Sub RelFormula()
Dim r_loop, c_loop As Integer
For c_loop = 2 To 2
    For r_loop = 2 To 6
        Cells(r_loop, c_loop).Formula = "=" & Cells(r_loop, c_loop - 1).Value _
        & "*" & Worksheets("Sheet1").Range("A1").Value
    Next r_loop
Next c_loop
End Sub

最新更新