我在Excel中編寫了一個VBA腳本,它將新數據添加到數據表中,幷包含以前的信息。在此之前,新數據被複制到臨時數據表中。爲了防止重複,我創建了一個額外的列並執行一個VLOOKUP的ID。如果來自新導入數據的ID與舊數據一起已經在數據表中,則該行被標記爲重複且將被刪除。然後將「非複製行」複製到最終的數據表中,在那裏存儲所有的數據。加快重複刪除
現在我使用的是列引用:在VLOOKUP(A A)和我不知道,也許這就是爲什麼VBA腳本每天都需要更多的資源和時間來運行的原因。當我第一次編碼時,我在原始數據表中做了不超過4000行的測試,並在導入的數據中做了4000行。該宏在90秒後完成。目前,它需要超過5分鐘的時間,數據的數據表只有40,000行大,而新的數據總是大約4000行。
我應該動態地引用範圍在VLOOKUP而不是使用的:A或它不會在速度方面有關係嗎?
顯示您的代碼。如果您在Worksheet上使用VLOOKUP功能,那將非常慢。 YOu可以在VBA中完成所有這些操作,而無需操作工作表。不過,我可能會使用與VLOOKUP不同的功能。可能還有其他方法可以優化,但我們首先需要看看你做了什麼。 –
動態引用範圍不會受到傷害,但將陣列用於如此大量的記錄是我的建議。以這種方式考慮一下,您擁有的4000個條目中的每一個條目都會查看40,000個其他條目以查找匹配項。 ID是否是數字?他們是誰的名字?數據是什麼樣的?可能有更有效的方法來查找重複。我可能會建議你複製所有的數據,並使用「數據」功能區下的excel「刪除重複」功能,我只是在100,000個條目的虛擬數據集上運行它,並花了3到4秒。 – pegicity
如果你有唯一的ID,那麼'Scripting.Dictionary'查找的速度會快幾個數量級。 –