- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
回復 24# ffntldj
試試看- Sub Ex()
- Dim f As Range, f1 As Range, Rng As Range, Ar, E As Range, S1 As Integer, S2 As Integer
- Dim d1 As Object, d2 As Object
- Set d1 = CreateObject("scripting.dictionary") 'Ans:2 -的物件
- Set d2 = CreateObject("scripting.dictionary") 'Ans:3 -的物件
- With Sheets("A") 'Ans:1 -----
- Set f = .Range("A1") '第一個"Mod part"
- Do
- Set f1 = .Columns(1).Find(What:="ACTION", MatchCase:=False, After:=f) '從 Mod part 往下找"ACTION"
- S1 = Application.Match("OPE_NO", f1.EntireRow, 0) 'ACTION列 找到"OPE_NO"欄位
- S2 = Application.Match("SPEC ID", f1.EntireRow, 0) 'ACTION列 找到"SPEC ID"欄位
- Set Rng = .Range(f.Offset(1), f1.Offset(-1)) 'Mod part - ACTION"之間的儲存格
- Do
- If f1 Like "MODIFY*" Then
- For Each E In Rng
- d1(Split(E, "-")(0)) = d1(Split(E, "-")(0)) & "," & f1(1, S1).Value 'Split(E, "-")(0) 前六碼(KEY) 寫入"OPE_NO"(ITEM)
- d2(E.Value) = f1(1, S2).Value 'MODIFY*(KEY) 寫入"SPEC ID"(ITEM)
- Next
- End If
- Set f1 = f1.Offset(1)
- Loop Until (f1 = "" And f1.End(xlDown).Row = Rows.Count) Or f1.Value = f.Value
- Set f = .Columns(1).Find(What:=f, MatchCase:=False, After:=f) '往下 尋找"Mod part"
- Loop Until f.Address = "$A$1" '回到第一個"Mod part"時離開迴圈
- End With 'Ans:1 -----End
- S1 = 0
- ReDim Ar(4, S1) '製定 寫入B1陣列的欄位 5欄(0-4)
- With Sheets("B")
- S2 = 2
- Do
- If InStr(d1(Split(.Cells(S2, 1), "-")(0)), .Cells(S2, 2)) Then
- 'a sheet抓出來之後(如上題),要去比對b sheet的資料(part_id 和ope_no欄位),如果確定資料符合就會寫入B1欄位
- Ar(0, UBound(Ar, 2)) = .Cells(S2, 1) 'Ans:2 -----
- Ar(1, UBound(Ar, 2)) = .Cells(S2, 2) 'Ans:2 -----
- Ar(2, UBound(Ar, 2)) = .Cells(S2, 3) 'Ans:2 -----
- Ar(3, UBound(Ar, 2)) = .Cells(S2, 4) 'Ans:2 -----
- Ar(4, UBound(Ar, 2)) = d2(.Cells(S2, 1).Value) 'Ans:3 -----
- ReDim Preserve Ar(4, UBound(Ar, 2) + 1)
- End If
- S2 = S2 + 1
- Loop Until .Cells(S2, 1) = "" '空白時離開迴圈
- End With
- With Sheets("B1")
- .UsedRange.Offset(1).Clear
- .[A2].Resize(UBound(Ar, 2), 5) = Application.Transpose(Ar)
- End With
- Set Rng = Nothing
- Set E = Nothing
- Set f = Nothing
- Set f1 = Nothing
- Set d1 = Nothing
- Set d2 = Nothing
- End Sub
複製代碼 |
|