Excel VBA for 具有相对单元格引用的循环公式
Excel VBA for loop formula with relative cell reference
我试图从单元格 "B2" 开始,输入一个公式,将 "B2" 左侧的单元格设为 "A2",乘以另一个单元格的数字sheet..
我的问题是...如何引用左侧的单元格?而且,我如何引用另一个 sheet 上的单元格?我很确定答案是一样的,但我想不通..
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 将不会 compile/run - 但对于像 "Row" 这样的东西,它们在 VBA 的其他地方使用...这是自找麻烦(即不 recommended/bad 练习等),并且会混淆 read/debug 等
此外,请考虑在任何代码模块的顶部使用 Option Explicit
(如果您尚未这样做)。如果您没有定义 all 变量,这将使 VBA complain/stop。这对初学者来说可能会令人沮丧 - 但在漫长的 运行.
中是值得的
我重写了你的代码,从表面上看,重命名和定义变量。从技术上讲,您不需要双(外)循环(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
我试图从单元格 "B2" 开始,输入一个公式,将 "B2" 左侧的单元格设为 "A2",乘以另一个单元格的数字sheet..
我的问题是...如何引用左侧的单元格?而且,我如何引用另一个 sheet 上的单元格?我很确定答案是一样的,但我想不通..
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 将不会 compile/run - 但对于像 "Row" 这样的东西,它们在 VBA 的其他地方使用...这是自找麻烦(即不 recommended/bad 练习等),并且会混淆 read/debug 等
此外,请考虑在任何代码模块的顶部使用 Option Explicit
(如果您尚未这样做)。如果您没有定义 all 变量,这将使 VBA complain/stop。这对初学者来说可能会令人沮丧 - 但在漫长的 运行.
我重写了你的代码,从表面上看,重命名和定义变量。从技术上讲,您不需要双(外)循环(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