Board logo

標題: [發問] 請問怎樣尋找相同的資料 [打印本頁]

作者: john2006168    時間: 2011-8-26 00:21     標題: 請問怎樣尋找相同的資料

本帖最後由 john2006168 於 2011-8-27 17:48 編輯

請問 ,我有2個 sheets,用sheet1的part no,尋找資料庫找sheet2(資料庫)相同的part no,如找到 在sheet1 填上 資料庫的"ref no",

但是資料庫內有些相同的part no有2個ref.,請問 我應該點改下列程序,我是新手請老師指導.


Sub testchecking()[attach]7587[/attach]


Dim i As Integer
Dim j As Integer
Dim RANGE As String

For i = 3 To Sheet1.RANGE("c65536").End(xlUp).Row
For j = 2 To Sheet2.RANGE("E65536").End(xlUp).Row

    If Sheet1.Cells(i, 3).Value = Sheet2.Cells(j, 5).Value Then

        Sheet1.Cells(i, 12).Value = Sheet2.Cells(j, 2).Value
        
        ElseIf Sheet1.Cells(i, 3).Value <> Sheet2.Cells(j, 5).Value Then
Sheet1.Cells(i, 12).Value = "No received"

   
    ElseIf Sheet1.Cells(i, 2).Value = "" Then Sheet1.Cells(i, 12).Value = ""
   

End If

    If Sheet1.Cells(i, 3).Value = Sheet2.Cells(j, 5).Value Then
   
Sheet1.Cells(i, 12).Value = Sheet2.Cells(j, 2).Value
    Sheet1.Cells(i, 13).Value = Sheet2.Cells(j, 1).Value

   

   
i = i + 1
End If
    Next
    Next
   
   
End Sub
作者: GBKEE    時間: 2011-8-28 15:56

回復 1# john2006168
使用Dictionary 物件   試試看
  1. Sub Ex()
  2.     Dim D As Object, E, S As String, S1 As String
  3.     Set D = CreateObject("SCRIPTING.DICTIONARY")
  4.     With Sheets("Sheet2")
  5.         For Each E In .Range("E2", .[E2].End(xlDown))
  6.             If D.EXISTS(E.Value) = False Then
  7.                 D(E.Value) = Array(E.Offset(, -3), E.Offset(, -4))
  8.             Else
  9.                 S = "," & D(E.Value)(0) & ","
  10.                 If InStr(S, "," & E.Offset(, -3) & ",") = 0 Then
  11.                     S = D(E.Value)(0) & "," & E.Offset(, -3)
  12.                 Else
  13.                     S = D(E.Value)(0)
  14.                 End If
  15.                 S1 = "," & D(E.Value)(1) & ","
  16.                 If InStr(S1, "," & E.Offset(, -4)) & "," = 0 Then
  17.                     S1 = D(E.Value)(1) & "," & E.Offset(, -4)
  18.                 Else
  19.                     S1 = D(E.Value)(1)
  20.                 End If
  21.                 D(E.Value) = Array(S, S1)
  22.             End If
  23.         Next
  24.     End With
  25.     With Sheets("Sheet1")
  26.         For Each E In .Range("C3", .[C3].End(xlDown))
  27.             If D.EXISTS(E.Value) Then
  28.                  E.Offset(, 9) = D(E.Value)(0)
  29.                  E.Offset(, 10) = D(E.Value)(1)
  30.             Else
  31.                 E.Offset(, 9) = "No received"
  32.                 E.Offset(, 10) = ""
  33.             End If
  34.             
  35.         Next
  36.     End With
  37. End Sub
複製代碼

作者: john2006168    時間: 2011-8-28 21:40

回復 2# GBKEE


  It is ok, 多謝老師抽時間回覆.
作者: john2006168    時間: 2011-8-28 22:30

回復  john2006168
使用Dictionary 物件   試試看
GBKEE 發表於 2011-8-28 15:56



    另外想問 D(E.Value)(0), (0)是什麼意思??
D(E.Value)(1), (1)是什麼意思??
作者: GBKEE    時間: 2011-8-29 14:33

回復 4# john2006168
Dictionary 物件  D(Key->關鍵字) = Item ->對應項目
D(E.Value) = Array(E.Offset(, -3), E.Offset(, -4))
D(E.Value)(0) = Array(0)
D(E.Value)(1) = Array(1)
作者: john2006168    時間: 2011-8-31 22:40

回復  john2006168
Dictionary 物件  D(Key->關鍵字) = Item ->對應項目
D(E.Value) = Array(E.Offset(, ...
GBKEE 發表於 2011-8-29 14:33



    Thanks.




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)