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)"
答案 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)"