使用 VBA 中生成的公式在工作表之间进行引用

Wiz*_*ead 2 excel vba excel-formula

我正在尝试使用引用当前工作表和另一个工作表的基本公式填充单元格。

我试图输入到一个单元格的公式基本上是......='Sheet2'A(j) / B(i)使用以下代码:

For i = 1 To 5
    For j = 1 To 5
        With shOut.Cells(i,j)
            .formula = "='Sheet2'" & Cells(j,1)).Address & "/" & Cells(i,2).Address
        End With
    Next j
Next i
Run Code Online (Sandbox Code Playgroud)

我遇到问题的部分是开始时引用的工作表;当我在 a 中运行它时.formula,它会触发一个错误。

但是,当我删除 '=' 符号并将其输出为 a 时.Value,它会打印出我想要的内容,除非它不是公式。

Gar*_*ill 7

您不必自己构建任何范围的地址 - 这样做只会让自己面临潜在的问题。

例如,在 cularis(非常好)的答案中,工作表名称周围没有单引号。在这种情况下它们不是必需的,但如果工作表名称中有空格,那么您确实需要引号。(我的观点是你不应该自己知道 - 并迎合 - 所有这些东西)。

相反,您可以External:=True在对 的调用中指定Address(),这将为您提供一个包含工作表名称的地址。我会做这样的事情:

Dim oWorksheet1 As Worksheet
Dim oWorksheet2 As Worksheet

...

.Formula = "=" & oWorksheet1.Cells(j,1).Address(External:=True) & "/" & oWorksheet2.Cells(i,2).Address(External:=True)
Run Code Online (Sandbox Code Playgroud)

请注意,在您的情况下,您可能只需要使用External其中一个工作表的参数,但这样做额外的时间不会有什么坏处,因为 Excel 无论如何都会为您简化公式。