大家好,今日推出常用"積木"過程案例分享第311期,今日內容是利用字典,實現單條件,結果多值查詢。提供給大家的這些內容是我多年經驗的記錄,來源於我多年的實踐。大家在學習VBA的時候,可以把這些代碼塊作為一塊塊的積木對待,平時積累,用時拿來修正、組合。這就是我的"積木編程"的思想,這些講解就是我推出的"積木"方案,希望大家加以利用。最近代碼多是出自我的第三套教程"VBA數組與字典解決方案"。
=================================①=============================
Sub mynzsz_80()
Sheets("80").Select
myarr = Range("a2:f" & Range("a2").End(xlDown).Row)
Set mydic = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(myarr)
mydic(myarr(i, 1)) = mydic(myarr(i, 1)) & " " & myarr(i, 2)
Next i
Set myRng = Range(Cells(2, "I"), Cells(Range("I2").End(xlDown).Row, "I"))
For Each uu In myRng
Cells(uu.Row, "J") = ""
Cells(uu.Row, "J") = mydic(uu.Value)
Next
Set mydic = Nothing
MsgBox ("ok")
End Sub
=================================②=============================
代碼講解:
1) 上述代碼中,將數據賦值給數組myarr,之後給字典mydic賦值,賦值的時候,提取數組的第一個值作為鍵,如果鍵值是多個,那麼用mydic(myarr(i, 1)) & " " & myarr(i, 2)進行合併處理。最後在查詢的時候,只要提取所給出查詢數據的鍵值即可:Cells(uu.Row, "J") = mydic(uu.Value)
2) '將數據存入數組
myarr = Range("a2:f" & Range("a2").End(xlDown).Row)
上述語句是將數據裝入數組中。
3) '在字典中裝入數據
For i = 1 To UBound(myarr)
mydic(myarr(i, 1)) = mydic(myarr(i, 1)) & " " & myarr(i, 2)
Next i
上述語句在字典中裝入數據,如果是鍵是重複的,鍵值將合併處理。
4) Set myRng = Range(Cells(2, "I"), Cells(Range("I2").End(xlDown).Row, "I"))
上述語句是將定義查詢區域,即:型號所在的單元格
5) For Each uu In myRng
'清空數據
Cells(uu.Row, "J") = ""
'填入查到的數據
Cells(uu.Row, "J") = mydic(uu.Value)
Next
上述語句實現查詢,注意上述代碼中的uu.VALUE是指單元格的值。
6) Set mydic = Nothing
清空內存。
分享成果,隨喜正能量