これは奇妙です... 誰かが何らかの知識を持っているか、なぜこれが起こっているのかを理解できますか?
以前は、数式の配列を Excel の範囲に割り当てることができました (高速割り当ての例: Range("A1:A1000") = ArrayOfFormulas
)。セルごとに割り当てるのと比較して、正常に機能し、高速(非常に高速)でした(セルごとの例:ループ 内。Range("A" & i).Formula=ArrayOfFormula(i)
遅いです!)。
現在、Excel 2013 を使用していますが、文字列の配列に保存されている数式を Excel の範囲に割り当てようとしても機能しません (下の図の左側の部分のように、数式は表示されますが、計算は表示されません)。残念ながら、古いコードを取得して比較することはできません。たとえば、次のコードは、A1 から A1000 の範囲で "3" ではなく "=1+2" を示します。
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
ただし、数式の配列を使用しない場合は正常に機能します (下の図の右側のように、すべてのセルに「=1+2」ではなく「3」が表示されます)。ここにコード:
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
上記のすべてのコードの出力を含む写真:
注: セルは、テキストではなく数値として適切にフォーマットされています。