2017-01-19 2 views
0

У меня есть две колонки, которые должны быть заполнены формулами (с значениями 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 каждый цикл в клетку. Буду признателен за любую помощь.

Carlos

ответ

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 + "& NullwertPosTren.Address (NullwertPosTren.Row, NullwertPosTren.Column, xlR1C1) & "" ' ' Диапазон ("D" и FirstRow & ": D" и LastRowPos) .FormulaR1C1 = "= ABS (RC1 - RC3)" ' – elserra

Смежные вопросы