標題:
[發問]
還是一個比對的問題
[打印本頁]
作者:
jesscc
時間:
2011-9-14 22:05
標題:
還是一個比對的問題
我覺得 Excel VBA 比對的寫法真的是超複雜,一直好像都抓不到重點
我要用工作頁Temp的A、B欄和工作頁Sheet1的D、G欄比對。
如果Temp-A欄和Sheet1-D欄相同,就比對它們各自對應的B、G欄(數值),如果數值不同,就在Sheet1-B欄標記出"?"
數值相同就標記出"V",比對不到的就不做任何動作。
我的測試檔比對出來的結果,完全不符所需,我實在也找不出哪裡有問題。
[attach]7803[/attach]
作者:
diabo
時間:
2011-9-14 23:03
Sub 資料比對()
For r = 12 To Sheets("Sheet1").[D65536].End(xlUp).Row
With Sheets("Sheet1")
A = .Cells(r, "D").Value
B = .Cells(r, "G").Value
End With
For rr = 1 To Sheets("Temp").[A65536].End(xlUp).Row
If A = Sheets("Temp").Cells(rr, "A").Value Then
If B = Sheets("Temp").Cells(rr, "B").Value Then
Sheets("Sheet1").Cells(r, "B").Value = "V"
Else
Sheets("Sheet1").Cells(r, "B").Value = "?"
End If
End If
Next rr
Next r
End Sub
複製代碼
作者:
Hsieh
時間:
2011-9-14 23:13
Sub ex()
Dim A As Range
Application.ScreenUpdating = False
Set d = CreateObject("Scripting.Dictionary")
With Sheets("Temp")
For Each A In .Range(.[A1], .[A1].End(xlDown))
d(A.Value) = A.Offset(, 1).Value
Next
End With
With Sheets("Sheet1")
.[B:B] = ""
For Each A In .Range(.[D12], .[D65536].End(xlUp))
If d.exists(A.Value) = True Then
If A.Offset(, 3) <> d(A.Value) Then
A.Offset(, -2) = "?"
ElseIf A.Offset(, 3) = d(A.Value) Then
A.Offset(, -2) = "V"
End If
End If
Next
End With
Application.ScreenUpdating = True
End Sub
複製代碼
回復
1#
jesscc
作者:
jesscc
時間:
2011-9-14 23:39
謝謝d大和H大超快速的解決方案
想請問H大
第3、22行有關畫面更新的問題。是否決定於要比對資料量的大小而開啟或關閉。還是說沒必要的話盡可能都關閉。
作者:
GBKEE
時間:
2011-9-15 06:57
回復
4#
jesscc
有關畫面更新的問題
看個人喜好而已不一定要用的.
作者:
jesscc
時間:
2011-9-15 20:56
回復
5#
GBKEE
了解!
謝謝H大和G大。
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)