Excel VBA for循环公式与相对单元格引用

我试图从单元格“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行列参数,最后的& ,正如注释所指出的那样。

另外,使用关键字或保留字作为variables是一个非常糟糕的主意。 有些名字是受保护的,如果某些单词被用作variables名称,VBA将无法编译/运行,但对于像“Row”这样的在VBA中的其他地方使用的东西…这是要求麻烦的/不好的做法等),并将读取/debugging等混乱。

另外,考虑在任何代码模块的顶部使用Option Explicit (如果你还没有的话)。 这将使VBA抱怨/停止,如果你没有定义所有的variables。 初学者可能会感到沮丧,但从长远来看这是值得的。

我重写了你的代码,表面上,重命名和定义variables。 从技术上讲,你不需要双(外)循环( 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