从Array执行字符串公式

时间:2017-01-19 13:35:47

标签: excel-vba vba excel

我有两列必须填充公式(具有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]

没有任何错误,与将每个循环放入单元格相比,它的速度很快。我将不胜感激任何帮助。

卡洛斯

1 个答案:

答案 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)"