[字典物件]單一欄位的值與多個陣列比對後並分類至不同欄位
- 帖子
- 2848
- 主題
- 10
- 精華
- 0
- 積分
- 2903
- 點名
- 0
- 作業系統
- 〔略〕
- 軟體版本
- 〔略〕
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 〔略〕
- 註冊時間
- 2013-5-13
- 最後登錄
- 2026-7-25
|
本帖最後由 准提部林 於 2016-10-20 16:43 編輯
- Sub U_Test()
- Dim xR As Range, xD, Arr, Brr, Mx&, N%, G(1 To 4), DK
- Arr = Range([A2], Cells(Rows.Count, 1).End(xlUp))
- Set xD = CreateObject("Scripting.Dictionary")
- For Each xR In [J2:L40]
- If xR <> "" Then xD(UCase(xR)) = xR.Column - 9 '關鍵字依其欄位帶序號
- Next
- ReDim Brr(1 To UBound(Arr), 1 To 4)
- For i = 1 To UBound(Arr)
- N = 4 '預設序號為4
- For Each DK In xD.keys
- If InStr(UCase(Arr(i, 1)), DK) Then N = xD(DK): Exit For '有符合,取出序號
- Next
- G(N) = G(N) + 1 '依序號不同, 各自累計欄位的筆數
- If G(N) > Mx Then Mx = G(N) '取得最大筆數
- Brr(G(N), N) = Arr(i, 1) '按序號及筆數填入資料到陣列
- Next i
- [B2].Resize(Mx, 4) = Brr
- End Sub
複製代碼
InStr 會區分英文大小寫, 必須使用 UCase 統一轉為大寫(LCase也可) |
|
|
|
|
|
|
|
- 帖子
- 2848
- 主題
- 10
- 精華
- 0
- 積分
- 2903
- 點名
- 0
- 作業系統
- 〔略〕
- 軟體版本
- 〔略〕
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 〔略〕
- 註冊時間
- 2013-5-13
- 最後登錄
- 2026-7-25
|
回復 8# greetingsfromtw
1.能贊助即可貴,這也幫助他人可以在此獲得知識
2.4樓超板的方法也許較符實情(以篩選而言),同一文字包含兩個關鍵字時,則兩次分別取出,
可測試範例檔的兩個程式去比較
3.另提供一個方便針對選取單一關鍵字的篩選法
20161020_比對單行資料與多個陣列v01.rar (14.18 KB)
|
|
|
|
|
|
|
|
- 帖子
- 2848
- 主題
- 10
- 精華
- 0
- 積分
- 2903
- 點名
- 0
- 作業系統
- 〔略〕
- 軟體版本
- 〔略〕
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 〔略〕
- 註冊時間
- 2013-5-13
- 最後登錄
- 2026-7-25
|
本帖最後由 准提部林 於 2016-10-21 19:53 編輯
回復 10# greetingsfromtw
那是工作表〔事件〕觸發程式,按Alt + F11,對工作表物件按兩下
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim xR As Range
With Target
If Intersect([J2:L8], .Cells) Is Nothing Then Exit Sub
If .Value = "" Then Exit Sub
Cancel = True
For Each xR In Range([A2], Cells(Rows.Count, 1).End(xlUp))
If InStr(UCase(xR), UCase(.Value)) > 0 Then
Cells(Rows.Count, "G").End(xlUp)(2) = xR
End If
Next
End With
End Sub |
|
|
|
|
|
|
|