2013-06-03 80 views
0

下面是代碼爲vlookup和countif。Excel公式 - VBA需要太長的時間來響應(計算),如何加快?

它需要超過5分鐘才能完成,任何想法的加速我的宏?

With Sheets("HW INVENT") 
    lRow = .Range("A200000").End(xlUp).Row 
    Application.screenupdating=false 
    Application.Calculation = xlCalculationManual 

    .Range("C2:C" & lRow).FormulaR1C1 = "=VLOOKUP(RC[-1],LAST_WEEK_KPI!C[-1]:C,2,0)" 
    .Range("D2:D" & lRow).FormulaR1C1 = "=COUNTIF(R2C2:R" & lRow & ",RC[-2])" 
    .Range("F2:F" & lRow).FormulaR1C1 = "=VLOOKUP(RC[-1],LAST_WEEK_KPI!C[-1]:C,2,0)" 
    .Range("G2:G" & lRow).FormulaR1C1 = "=COUNTIF(R2C5:R" & lRow & ",RC[-2])" 
    Application.Calculation = xlCalculationAutomatic 
    Application.screenupdating=true 
End With 

任何想法,爲什麼它的時間太長,完成..在此先感謝..

+0

'Application.screenupdationg'只是一個錯字,或者它在實際的代碼中?它應該是'Application.ScreenUpdating' – barrowc

+0

已完成的變化..謝謝你..仍然需要更多的時間來完成..建議我如果有.. –

+0

爲了獲得更好的性能,嘗試限制範圍。看起來你已經最大化了他們。 – momobo

回答

1

代替將公式中,嘗試這樣的:

.Range("C2:C" & lRow).Value = Application.WorksheetFunction.VLookup(lookupvalue, Range("A:A"), 1, 0) 

這種方法Application.WorksheetFunction.VLookup(lookupvalue, Range("A:A"), 1, 0) 直接返回值。

+0

謝謝Alv ...上面的方法比我的宏運行得更快.. :) –

相關問題