2017-01-15 91 views
0

我有下面的代碼,它使用「UG list」作爲源代碼,並在兩張不同的工作表上進行vlookup - 延遲和TT。在Vlookup中更新唯一值

如果找到結果,它會將字符串「UG」傳遞到每張紙的特定列上。

問題是即使有重複值的字符串「UG」得到更新..但我想要的是,「UG」應該更新爲唯一值..它不應該再次更新爲相同的值,並且再次。

Sub vlookup() 
Dim cl As Range, Dic As Object 
Set Dic = CreateObject("Scripting.Dictionary"): Dic.Comparemode = vbTextCompare 
With Sheets("Latency") 
For Each cl In .Range("B2:B" & .Cells(Rows.count, "C").End(xlUp).Row) 
    If Not Dic.exists(cl.Value) Then Dic.Add cl.Value, cl.Row 
Next cl 
End With 
With Sheets("UG list") 
For Each cl In .Range("A2:A" & .Cells(Rows.count, "A").End(xlUp).Row) 
    If Dic.exists(cl.Value) Then 
     Sheets("Latency").Cells(Dic(cl.Value), 17) = "UG" 
    End If 
Next cl 
End With 

With Sheets("TT") 
For Each cl In .Range("A2:A" & .Cells(Rows.count, "C").End(xlUp).Row) 
    If Not Dic.exists(cl.Value) Then Dic.Add cl.Value, cl.Row 
Next cl 
End With 
With Sheets("UG list") 
For Each cl In .Range("A2:A" & .Cells(Rows.count, "A").End(xlUp).Row) 
    If Dic.exists(cl.Value) Then 
     Sheets("TT").Cells(Dic(cl.Value), 23) = "UG" 
    End If 
Next cl 
End With 

Set Dic = Nothing 
End Sub 

回答

0

兩件事情:


  1. 您使用的是相同的字典Dic不同的表。在將它用於下一張紙之前,清除字典,以便您沒有任何舊值。

    dic.RemoveAll With Sheets("TT") .........


  • 爲了防止第二更新,剛剛從詞典中刪除的項目,只要你找到它第一次。雖然我不確定你指的是什麼重複的價值,但在字典中你不能有重複。

    If dic.exists(cl.Value) Then 
        Sheets("Latency").Cells(dic(cl.Value), 17) = "UG" 
        dic.Remove (cl.Value) 
    End If 
    

  • 如果你只是在談論這裏,如果q列中已經得到了「UG」,在它的場景,你想跳過該單元格,然後手之前只是檢查。

    If dic.exists(cl.Value) Then 
         If Sheets("Latency").Cells(dic(cl.Value), 17) <> "UG" Then 
          Sheets("Latency").Cells(dic(cl.Value), 17) = "UG" 
         End If 
        End If