Excel:如何将多个公式加载回一个范围

Excel: how to load multiple formulas back to a range

大多数人都知道,您应该计算VBA中的所有数字并一次性将它们全部加载到Excel中,以减少访问电子表格的次数并提高速度。通常 Range("a1:a10") = myArray.

好吧,我想这样做,但对于公式而不是值。

Sub myTest()
  Dim myFormulas() As String
  ReDim myFormulas(1 To 5)

  myFormulas(1) = "Abc"
  myFormulas(2) = "Ac"
  myFormulas(3) = "Ab"
  myFormulas(4) = "bc"
  myFormulas(5) = "=A1"

  Range("F232:J232").Formula = myFormulas
End Sub

这个"almost works"。在 J232 中,它显示文本 =A1 而不是 A1 的值。然后我需要进入公式并按回车键输入 =A1,然后转换为 A1 的值。

有没有人遇到过这种情况?任何修复?

因为你设置的是字符串,试试这个:

Sub myTest()
    Dim myFormulas() As Variant
    myFormulas = Array("Abc", "Ac", "Ab", "bc", "=A1")
    Range("F232").Resize(1, UBound(myFormulas) + 1).Formula = myFormulas
End Sub

还使用调整大小来计算数组的大小而不是静态范围,使其更加动态