我有一個大範圍(高達60k行),我也想申請一個公式。VBA將公式應用於大範圍
循環會花費太長時間。該公式將應用於行上的信息,因此不會完全相同,但該行將是唯一的變量。
這樣做的最好方法是什麼?我以爲我會用VBA而不是Excel來確保電子表格不會太麻煩。
我有一個大範圍(高達60k行),我也想申請一個公式。VBA將公式應用於大範圍
循環會花費太長時間。該公式將應用於行上的信息,因此不會完全相同,但該行將是唯一的變量。
這樣做的最好方法是什麼?我以爲我會用VBA而不是Excel來確保電子表格不會太麻煩。
下面是一個簡單的方法來做你想做的。如果公式花費很長時間來更新,則使用VBA計算結果可能更好,並將結果輸出到範圍。
假設你想在行D2式=INDEX($M:$M,MATCH(A2,$N:$N,0),0)
:D60000
我。打開宏記錄器
ii。啓用使用相對引用
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)"
啊我忘記了我用來記錄宏而不是嘗試寫下它們的相關引用!其實這是一筆款項,如果這樣的話可能需要對公式有點聰明,但一旦記錄完成後就可以玩了。謝謝。 –
更新 - 我已經設法將公式導入單元格,但不清楚如何獲取值。我認爲如果我使用rngcopy.value =「= IF(RC [-10] =」「」「,」「」「,IF(WEEKDAY(RC [-10])= 2,RC [-10] -3, IF(WEEKDAY(RC [-10])<> 2,RC [-10] -1)))「可以工作,但它給出公式而不是數值。 –
您可以使用cell.Text屬性來獲取單元格文本。 – user3357963
'公式將應用於行中的信息,因此不會完全相同 - 這意味着公式完全相同。請舉例說明第1行和第2行的公式。 – GSerg
「過於繁瑣」?結果不會一樣嗎? Is = ROW()不適合? – pnuts
如果你在VBA中這樣做,我會建議使用VBA評估公式,並只將結果寫入工作表。除非你需要在單元格中維護公式,否則它將運行得更快,如果你這樣做,就不太容易「破壞」。 –