我連續有幾個公式,我想拖動它們。公式很複雜,我沒有他們R1C1格式,我不想將它們轉換成R1C1,但我想這樣做:拖動公式而不拖動
Range(A2:B10).Formula = Range.(A1:B1).Formula
我知道這會給相同公式進入整個範圍,我需要一個「拖動效果」 - 所以它相對於每一行都有變化,但是沒有粘貼的。
P.S.我不想複製粘貼的,因爲它吃更多的CPU,我想有一些
我連續有幾個公式,我想拖動它們。公式很複雜,我沒有他們R1C1格式,我不想將它們轉換成R1C1,但我想這樣做:拖動公式而不拖動
Range(A2:B10).Formula = Range.(A1:B1).Formula
我知道這會給相同公式進入整個範圍,我需要一個「拖動效果」 - 所以它相對於每一行都有變化,但是沒有粘貼的。
P.S.我不想複製粘貼的,因爲它吃更多的CPU,我想有一些
定義要用公式填充的範圍並使用Range.FillDown
。
Range("A1:B10").FillDown
注:範圍的第一行(S)必須包括原始的公式
一個小小的伎倆:
Sub KopyFormulas()
Range("A1:B1").Copy Range("A2:B10")
End Sub
將向下複製公式和調整他們作爲好 !
謝謝,但不好意思。我知道如何複製粘貼,但我不想使用這種方法,因爲它會佔用CPU。 –
@SergeyRyabov是的......我明白......不幸的是,它是支持調整活動的複製粘貼。 –
對於單個單元格,無需將公式明確地轉換爲R1C1格式即可使用FormulaR1C1
。
即使你使用的是標準A1
風格引用的,你仍然可以使用
Range("B2:B10").FormulaR1C1 = Range("B1").FormulaR1C1
,這將有B1
向下複製公式的效果。它不會更改默認格式 - 它們仍將以A1
格式顯示。
對於一個由兩個或更多個單元構成的塊來說,這似乎存在問題。 (如果需要在一個循環中),你可以通過做這列列:
Range("A2:A10").FormulaR1C1 = Range("A1").FormulaR1C1
Range("B2:B10").FormulaR1C1 = Range("B1").FormulaR1C1
不管這是值得冒這個險(相對於簡單的.FillDown
)是另外一個問題。你可以計時。
順便說一句 - 我不認爲.FillDown
是特別低效。你是否做過關閉屏幕更新,將計算設置爲手動等通常的優化?
我已經嘗試了您的第一個答案的方法,是的,正如您已經注意到的那樣,多列公式轉移有一些問題。但我也不明白爲什麼它不起作用。我做了通常的優化,'.FillDown'工作得很好。 –
在多列方法中,「FormulaR1C1」是一個數組而不是簡單的字符串。儘管如此,Range(「A2:B10」)。FormulaR1C1 =範圍(「A1:B1」)。FormulaR1C1似乎以反直覺的方式擴展該陣列。它不會簡單地重複第9行的9次,但在進入一些自動填充邏輯之前似乎這樣做了一次,這可能導致意想不到的結果。爲什麼,我不知道。 –
怎麼樣'FillDown'方法? –
@ShaiRado謝謝!你知道它是否具有與複製粘貼相同的CPU消耗?我需要的東西是更快... –
從來沒有bench-marked這兩個與 –