这很奇怪......有人有一些知识或可以弄清楚为什么会发生这种情况?
过去,我能够将一组公式分配给 Excel 范围(快速分配示例:) Range("A1:A1000") = ArrayOfFormulas
。与逐个单元分配(示例逐个单元:在循环内。很慢! )相比,它工作正常且快速(非常 快)。Range("A" & i).Formula=ArrayOfFormula(i)
我现在正在使用 Excel 2013,当尝试将存储在字符串数组中的公式分配给 excel 范围时,它不起作用(excel 显示公式,但不显示下图左侧的计算)不幸的是,我无法检索旧代码进行比较。例如,以下代码在 A1 到 A1000 范围内显示“=1+2”而不是“3”。
Sub AssignFormulas_1()
Dim i as Long
Dim FORML_ARRAY(1 To 1000, 1 To 1) As String
For i = 1 To 1000
FORML_ARRAY(i, 1) = "=1+2"
Next i
Range("A1:A1000").Formula = FORML_ARRAY '<- Don't work as formula
' It put the value!
End Sub
但是,当我不使用公式数组时,它可以正常工作(所有单元格显示“3”而不是“=1+2”,如下图右侧)。这里的代码:
Sub AssignFormulas_2()
Dim i as Long
Dim FORML_SINGLE As String
FORML_SINGLE = "=1+2"
Range("A1:A1000").Formula = FORML_SINGLE '<- works ok, not practical for my
' real life case as I need
' different formula for each cell.
End Sub
下面的代码也很好用(在这种情况下,我一个一个单元格地分配公式,所以对于大型公式来说更灵活但更慢)。
Sub AssignFormulas_3()
Dim i as Long
Dim FORML_ARRAY(1 To 1000, 1 To 1) As String
For i = 1 To 1000
FORML_ARRAY(i, 1) = "=1+2"
Range("A1:A" & i).Formula = FORML_ARRAY(i, 1) '<- works ok, but slowly
Next i
End Sub
以上所有代码输出的图片:
注意:单元格被正确格式化为数字,而不是文本!