結果多值查詢的實現

大家好,今日推出常用"積木"過程案例分享第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

清空內存。


結果多值查詢的實現


分享成果,隨喜正能量


分享到:


相關文章: