您再試壹下下面的代碼。我這邊試了壹下,應該是解決了。
由於您的數據是數字,位數加長了以後,字典的key自動識別為雙精度Double,存儲和讀取都慢了很多,現改為字符型就好了。
Sub?cz()n?=?Now()
Dim?d
Set?d?=?CreateObject("Scripting.Dictionary")
Dim?i,?Sr,?Yr?As?Long
Dim?ShmxH,?Yhdz,?ShmxX
Sr?=?Range("H"?&?Rows.Count).End(xlUp).Row
ShmxH?=?Range("H2:H"?&?Sr)
ShmxX?=?Range("X2:X"?&?Sr)
'Workbooks.Open?ThisWorkbook.Path?&?"\銀行到賬.xlsx"
Workbooks("銀行到賬").Activate
Yr?=?Range("E"?&?Rows.Count).End(xlUp).Row
Yhdz?=?Range("E2:H"?&?Yr)
For?i?=?1?To?UBound(Yhdz)
d(Yhdz(i,?1)?&?"")?=?Yhdz(i,?4)
Next
For?i?=?1?To?UBound(ShmxH)
If?d.exists(ShmxH(i,?1)?&?"")?Then
ShmxX(i,?1)?=?d(ShmxH(i,?1)?&?"")
Else
ShmxX(i,?1)?=?"N/A"
End?If
Next
ThisWorkbook.Activate
Range("X2").Resize(UBound(ShmxX),?1)?=?ShmxX
Set?d?=?Nothing
'Workbooks("銀行到賬").Close
MsgBox?(Now()?-?n)?*?24?*?3600?&?"秒"
End?Sub