我正在尝试避免激活工作表,因为我在电子表格中进行了计算。但是,我遇到了一个问题。此说明完全在我的Excel 2016(32位)版本上重现了该问题。
创建一个包含2张工作簿的新工作簿:Sheet1和Sheet2。 Sheet1是空白的。在Sheet2中,在单元格A2:A21中,我放了一些整数。然后我添加了一个使用R1C1公式格式的模块,将一些公式放在Sheet2的G列中,使用以下代码:
Option Explicit
Sub Test()
Dim osht As Excel.Worksheet
Dim NumRows As Integer
Set osht = ThisWorkbook.Worksheets("Sheet2")
NumRows = 20
osht.Range("G1").Offset(1, 0).Resize(NumRows, 1).FormulaR1C1 = "=RC[-6]*5"
End Sub
我添加了一个图表工作表,用图表绘制Sheet2中的内容。如果您使用Sheet1或Sheet2作为活动工作表运行代码,它将正常工作,Sheet2!G2:G21
中的公式是正确的:
=RC[-6]*5
在激活CHART表的情况下运行代码,这不起作用。 Sheet2!G2:G21
中的公式如下所示:
=R[-1]C[16372]*5
这也发生在Excel 2013(32位)中。
我在哪里错了?或者这是一个Excel错误?
答案 0 :(得分:1)
好的,解决了这个问题。我不需要使用R1C1引用来获得范围内的公式正确(我认为我做了)。回到常规Formula vs. FormulaR1C1修复了这个问题。