[字典物件]單一欄位的值與多個陣列比對後並分類至不同欄位
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
回復 3# greetingsfromtw
不用字典物件也可以試試看- Option Explicit
- Sub Ex()
- Dim Rng As Range, R As Range, E As Range, i(1 To 2) As Integer
- With Range("J1").CurrentRegion
- i(1) = .Columns.Count + 1
- Set Rng = .Rows("2:" & .Rows.Count).SpecialCells(xlCellTypeConstants) '比對字串
- End With
- Range([A2], [A2].End(xlDown)).Offset(, 1).Resize(, i(1)) = ""
- For Each R In Range([A2], [A2].End(xlDown)) '原始資料迴圈
- i(2) = i(1)
- For Each E In Rng
- If InStr(UCase(R), UCase(E)) Then
- i(2) = E.Column - Range("J1").Column + 1
- Exit For
- End If
- Next
- With Cells(65536, 1 + i(2))
- If .EntireColumn.Find(R, Lookat:=xlPart) Is Nothing Then .End(xlUp).Offset(1) = R
- '資料不重複
- End With
- Next
- End Sub
複製代碼 |
|
|
|
|
|
|
|
- 帖子
- 45
- 主題
- 10
- 精華
- 0
- 積分
- 59
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office 2007
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2014-2-6
- 最後登錄
- 2019-6-22

|
3#
發表於 2016-10-20 16:50
| 只看該作者
回復 2# 准提部林
非常感謝淮提部林前輩提供解答,比原本的程式碼縮減很多,小弟嘆服.
目前還在努力鑽研字典物件中,
一定努力學習,
希望有朝一日能及得上前輩的萬分之一. |
|
|
|
|
|
|
|
- 帖子
- 2848
- 主題
- 10
- 精華
- 0
- 積分
- 2903
- 點名
- 0
- 作業系統
- 〔略〕
- 軟體版本
- 〔略〕
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 〔略〕
- 註冊時間
- 2013-5-13
- 最後登錄
- 2026-7-25
|
2#
發表於 2016-10-20 16:41
| 只看該作者
本帖最後由 准提部林 於 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也可) |
|
|
|
|
|
|
|