我想知道如何在专栏J2:J600上保留一个公式。公式为=R2
,并且会一直下降到=R600
。我以为我可以手动输入公式,但每次运行我的宏时,公式都会消失。有没有办法将公式嵌入到列中?感谢。
修改
Sub FormatCounsel()
Sheet2.Range("J2").FormulaR1C1 = "=RC[0]"`
Sheet2.Range("J2").AutoFill Destination:=Range("J2:J600"), Type:=xlFillDefault
End Sub
这是我投入的,我收到了错误。
编辑2
对不起,我刚才意识到我想在单元格=R2
中使用公式J2:J600
。对不起,如果我引起任何混淆。
答案 0 :(得分:1)
我在您的代码中看到一个大红旗:您正在使用循环引用!这意味着您要说J2 = J2。换句话说,你的公式指的是一个值,所以它计算找到值,但要找到它需要计算的值,等等......
当您手动输入循环引用时,输入循环引用 总是会出错。但是,当使用VBA输入CR时,我只能通过将Application.Calculation
设置为xlCalculationManual
,然后计算工作表来引发错误。
你可能刚刚写了一个错字,这就解释了为什么在你的代码中有循环引用,但我想我无论如何都要解释它。 :)
R1C1 公式使用相对引用来引用单元格。因此,当您说RC[0]
时,您说要在同一行和同一列中使用该单元格。让我们看一些例子。在我们的示例中,公式将在B2中。
Dim r As Range
Set r = Range("B2")
r = "=RC" '<~~~ the equivalent to what you used in your code. Refers to B2.
r = "=R[-1]C" '<~~~ Refers to B1 (current row minus 1).
r = "=RC[1]" '<~~~ Refers to C2 (current column plus 1).
r = "=R[1]C[1]" '<~~~ Refers to C3 (current row and current column plus 1).
r = "=R[-1]C[-1]" '<~~~ Refers to A1 (current row and current column minus 1).
现在,只要将公式输入到单元格中,就可以一次完成并且非常容易。请考虑以下示例:
Sub FormatCounsel()
Sheet2.Range("J2:J600") = "=RC[1]" '<~~ Each cell will refer to the cell to the right.
End Sub
答案 1 :(得分:0)
每当你向这些单元格写入其他内容或使用宏清除它们时,您将丢失这些公式。您需要在代码中找到要覆盖或清除它们的位置,并修改该代码。另一种选择是将这些公式写回宏末尾的单元格。您可以通过以下方式完成此任务:
Range("J2").FormulaR1C1 = "=RC[0]"
Range("J2").AutoFill Destination:=Range("J2:J600"), Type:=xlFillDefault