想問本身有個excel有14萬行資料, 想寫macro replace資料.. 但好慢...

本身有個excel 有14萬個row, 當中有2萬條要更新record.
我就用 Range("A:A").find("目標keyword, product ID")
搵到之後就 rows(i).entirerow.copy rows(range("A:A").find("目標keyword, product ID").row)

雖然work但非常之慢, 我仲用個for loop, 去由1到20000讀個2萬條新record.
新record我就直接paste係14萬條row既下面.
如是者, 一邊for loop讀一條新record, 搵到上面14萬有相同product ID就replace.
再由for loop讀第2條新record, 搵到再replace......

請問有咩方法可以快速將2萬條record 以 product ID (呢個key) 取代14萬條row入面既舊record呢?
謝謝

貼你的代碼上去問CHATGPT有無得優化

TOP

貼你的代碼上去問CHATGPT有無得優化
abcjerry 發表於 2023-2-12 00:56

貼上去嘅話可能會正出呢

via HKEPC IR Pro 3.6.1 - Android(3.3.1)

TOP

回覆 1# longleg


1. vlookup吾得?

2.如果上面吾得,試下將cell資料放入array ,  用array 處理完,將array 放入cell,   這個方法應該最快了,但有點複雜。

TOP

回復 1 #longleg

轉去access做

via HKEPC Reader for Android

TOP

Should use database software。。。。。

How about Access。。。

TOP

本帖最後由 javacomhk 於 2023-2-13 13:53 編輯

想要加速 VBA Replace 功能,您可以考慮以下幾個步驟:

禁用螢幕更新:您可以使用 Application.ScreenUpdating = False 來停止顯示更新,以加速 VBA 程式的執行速度。

使用 For 迴圈:您可以使用 For 迴圈來替代使用條件式(If statement)。

使用陣列:您可以將資料轉換為陣列,再使用 For 迴圈對陣列進行處理,以加速 VBA 程式的執行速度。

使用 Worksheet.UsedRange 屬性:您可以使用 Worksheet.UsedRange 屬性來取得所有已使用的儲存格,而不是整個工作表,以加速 VBA 程式的執行速度。

使用 WorksheetFunction.Substitute 函數:您可以使用 WorksheetFunction.Substitute 函數來取代 Replace 功能,以加速 VBA 程式的執行速度。

TOP