標題:
[發問]
無法精確比對
[打印本頁]
作者:
jesscc
時間:
2011-9-13 23:25
標題:
無法精確比對
用Sheets2 --D欄的資料去跟Sheets1--B欄的資料比對,找到完全相同的就把Sheets1中同一列的相關資料貼到Sheets2的相對位置中
可是好像沒辦法做到精確比較,測試檔中應該只有第7筆能比對到,可是卻比對出現3筆。
[attach]7800[/attach]
作者:
chin15
時間:
2011-9-14 00:05
Sub ex()
Set d = CreateObject("Scripting.Dictionary")
With Sheet1
For Each a In .Range(.[B5], .[B56636].End(xlUp))
d(a & "") = Array(a.Offset(, 1).Value, a.Offset(, 2).Value, a.Offset(, 3).Value, a.Offset(, 4).Value)
Next
End With
With Sheet2
For Each a In .Range(.[D12], .[D56636].End(xlUp))
If d.exists(a & "") Then a.Offset(, 4).Resize(, 4) = d(a & "")
Next
End With
End Sub
複製代碼
作者:
jesscc
時間:
2011-9-14 00:42
回復
2#
chin15
原來精確比對要用exists函數。
謝謝c大這麼快就幫我解決問題了^^
作者:
GBKEE
時間:
2011-9-14 06:26
回復
1#
jesscc
Sub Ex()
Dim D As Object, A As Range
Set D = CreateObject("Scripting.Dictionary")
With Sheet1
For Each A In .Range(.[B5], .[B56636].End(xlUp))
D(A & "") = A.Offset(, 1).Resize(, 4).Value
Next
End With
With Sheet2
For Each A In .Range(.[D12], .[D56636].End(xlUp))
A.Offset(, 4).Resize(, 4) = D(A & "")
Next
End With
Set D = Nothing
Set A = Nothing
End Sub
複製代碼
作者:
jesscc
時間:
2011-9-14 22:00
回復
4#
GBKEE
謝謝G大的幫忙
最後的
14.Set D = Nothing
15.Set A = Nothing
是什麼意思啊?
是否Dim後面有宣告到的,都要這樣處理嗎?
作者:
GBKEE
時間:
2011-9-15 06:23
回復
5#
jesscc
=> 釋放記憶體
VBA 的說明
Nothing 關鍵字是用來將一個物件變數從一個實際的物件�堣擢鰶}來。使用 Set 陳述式可指定 Nothing 給物件變數。舉例來說:
Set MyObject = Nothing
數個物件變數可以同時引用一個實際物件,而當 Nothing 被指定給一個物件變數,那麼該變數將不再引用任何實際物件。當數個物件變數同時引用一個物件,那麼和該物件有關連的記憶體、系統資源中被物件變數所引用到的部份,只有在全部的物件變數都設成 Nothing 後才會被釋放。而變數被設成 Nothing 的方法不外是直接使用 Set,或等待最後被設成 Nothing 的物件變數超出範圍之後。
作者:
jesscc
時間:
2011-9-15 20:45
回復
6#
GBKEE
大概了解意思了,謝謝G大
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)