2016-04-28 105 views

回答

7

這將做全程只需:

Range("B1:B4").Value = ActiveSheet.Evaluate("INDEX(B1:B4 * 4/7,)") 

前:

enter image description here

後:

enter image description here

只顯示。我跑了這一點:

Sub foo() 
Dim t 
t = Now() 
[B:B] = ActiveSheet.Evaluate("INDEX(row(B:B)*1,)") 
[B:B] = ActiveSheet.Evaluate("INDEX(B:B * 4/7,)") 
Dim x 

Debug.Print (Now() - t) * 24 * 60 * 60 
End Sub 

填充與細胞的行號的整列B,那麼這是否是必需的數學。

花費了2秒來完成整個100萬行以上。

enter image description here

+0

這會不會是太慢了,如果我有一個非常大的範圍? –

+0

不是我已經注意到了。這將比循環更快。 @ N.Pavon –

+0

每次我在VBA中使用「評估」函數時,如果表達式包含大範圍,實際評估表達式將需要一段時間。我會檢查。 –

3

使用一個循環:

Dim c As Range 
For Each c In Range("B1:B4").Cells 
    c.Value = c.Value * 4/7 
Next c 
+0

我得到一個編譯錯誤:預期=固定 –

+0

- 我只是編碼Python的一點點前忘了VBA單詞「每個」 –

相關問題