2013-09-28 91 views
1

我有一個大範圍(高達60k行),我也想申請一個公式。VBA將公式應用於大範圍

循環會花費太長時間。該公式將應用於行上的信息,因此不會完全相同,但該行將是唯一的變量。

這樣做的最好方法是什麼?我以爲我會用VBA而不是Excel來確保電子表格不會太麻煩。

+1

'公式將應用於行中的信息,因此不會完全相同 - 這意味着公式完全相同。請舉例說明第1行和第2行的公式。 – GSerg

+0

「過於繁瑣」?結果不會一樣嗎? Is = ROW()不適合? – pnuts

+1

如果你在VBA中這樣做,我會建議使用VBA評估公式,並只將結果寫入工作表。除非你需要在單元格中維護公式,否則它將運行得更快,如果你這樣做,就不太容易「破壞」。 –

回答

0

下面是一個簡單的方法來做你想做的。如果公式花費很長時間來更新,則使用VBA計算結果可能更好,並將結果輸出到範圍。

假設你想在行D2式=INDEX($M:$M,MATCH(A2,$N:$N,0),0):D60000

我。打開宏記錄器

ii。啓用使用相對引用

enter image description here

III。輸入單個單元格中所需的公式(確保拖動它將對所有行都是正確的)

iv。關閉宏錄製

v在VB編輯找到公式記錄 - 比如

ActiveCell.FormulaR1C1 = "=INDEX(C13,MATCH(RC[-5],C14,0),0)" 

六。將公式應用到所需範圍內使用

Sheet1.range("D2:D60000").FormulaR1C1 = "=INDEX(C13,MATCH(RC[-5],C14,0),0)" 
+0

啊我忘記了我用來記錄宏而不是嘗試寫下它們的相關引用!其實這是一筆款項,如果這樣的話可能需要對公式有點聰明,但一旦記錄完成後就可以玩了。謝謝。 –

+0

更新 - 我已經設法將公式導入單元格,但不清楚如何獲取值。我認爲如果我使用rngcopy.value =「= IF(RC [-10] =」「」「,」「」「,IF(WEEKDAY(RC [-10])= 2,RC [-10] -3, IF(WEEKDAY(RC [-10])<> 2,RC [-10] -1)))「可以工作,但它給出公式而不是數值。 –

+0

您可以使用cell.Text屬性來獲取單元格文本。 – user3357963