2017-01-19 3 views
0

2つの列に数式(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] 

そこにはエラーはありませんし、それが細胞内にすべてのループをwirtingに比べて高速な軽量化です。助けていただければ幸いです。

カルロス

答えて

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)" 
+0

おかげで多くのことを、!私はまだR1C1の表記をしていないし、参照されているセルは移動しましたが、私はそれを理解しようとします。 このソリューションは正常に動作しました: 'Range(" C "&FirstRow&":C "&LastRowPos).FormulaR1C1 =" = "&SteigungPos.Address(SteigungPos.Row、SteigungPos.Column、xlR1C1)&" * RC2 + "& "(" D "&FirstRow&":D "&LastRowPos).FormulaR1C1 =" = ABS(RC1 - RC3) "' NullwertPosTren.Address(NullwertPosTren.Row、NullwertPosTren.Column、xlR1C1)& "" – elserra

関連する問題