在公式中引用另一个工作表中的单元格时出错

时间:2015-10-29 17:05:33

标签: excel vba excel-vba excel-formula

excel中的公式是

=100/(INDIRECT("'History Data'!B" & M2)-100)

这里M2给出了B列中的行号,这就是我使用 INDIRECT 功能的原因。现在,当我尝试在VBA中编写它时,它会抛出一个错误,我无法找到解决方案,但我认为这是因为我引用的工作表在其名称中有一个空格,因此我需要在公式的开头和结尾处操纵单引号'

我写过这个

.Formula = "=100/(INDIRECT(" & Chr(34) & Chr(34) & "History Data" & Chr(34) & "!B" & M2 & ")-100)"

2 个答案:

答案 0 :(得分:1)

试试这个:

.Formula = "=100/(INDIRECT(""'History Data'!B"" & M2)-100)"

答案 1 :(得分:0)

或者 - 不使用INDIRECT,而是使用INDEX - 因为您已经有了工作表名称和列字母,因此INDEX将(1)读取的复杂性较低; (2)跑得快; (3)不是“易变”功能 - 这意味着每次重新计算时都不会重新计算。非易失性函数仅在其中一个先例发生更改时重新计算。

您的公式如下:

=100/(INDEX('History Data'!B:B,M2)-100)

这意味着您的VBA代码如下所示:

.Formula = "=100/(INDEX('History Data'!B:B," & M2 & ")-100)"

虽然我不确定在VBA中这里引用的M2是什么 - 也许这应该是:

.Formula = "=100/(INDEX('History Data'!B:B," & Range("M2") & ")-100)"