我有两列必须填充公式(具有5k到10k的值)。这些是简单的公式,他们的工作。
但是直接写入单元格会使程序减慢太多,所以我将公式写入数组,然后将数组粘贴到工作簿中。这也很好,它只是不评估字符串。我尝试使用EVALUATE
但没有成功。
如果我选择任何复制的单元格,请按F2和Enter键,它们可以正常工作。
代码示例:
ReDim Schreibblock(FirstRow To LastRowPos, 0 To 1)
For j = FirstRow To LastRowPos
Schreibblock(j, 0) = "=" & SteigungPos.Address & "*$B$" & j & "+" & NullwertPosTren.Address & ""
Schreibblock(j, 1) = "=ABS($A$" & j & "-$C$" & j & ")"
Next j
Range("C" & FirstRow & ":D" & LastRowPos).Formula = [Schreibblock]
这里有一个“简易版”,以便于阅读:
ReDim array(14 To 5000, 0 To 1)
For j = 14 To 5000
Array(j, 0) = "=$B$10*$B$14+$B$9" <- This is what I see, but w/o ""
Array(j, 1) = "=ABS($A$14-$C$14)" <- This is what I see, but w/o ""
Next j
Range("C14:D5000").Formula = [Array]
没有任何错误,与将每个循环放入单元格相比,它的速度很快。我将不胜感激任何帮助。
卡洛斯
答案 0 :(得分:0)
使用R1C1表示法并跳过数组并循环:
Range("C" & FirstRow & ":C" & LastRowPos).FormulaR1C1 = "=" & SteigungPos.Address(0,0,xlR1C1) & "*RC2 +" & NullwertPosTren.Address(0,0,xlR1C1) & ""
Range("D" & FirstRow & ":D" & LastRowPos).FormulaR1C1 = "=ABS(RC1 - RC3)"