- 帖子
- 248
- 主題
- 55
- 精華
- 0
- 積分
- 314
- 點名
- 102
- 作業系統
- XP / WIN7
- 軟體版本
- 2003 / 2007
- 閱讀權限
- 20
- 性別
- 男
- 來自
- Tainan
- 註冊時間
- 2013-10-18
- 最後登錄
- 2025-5-20
            
|
謝謝大大
當初好像把流程想得太複雜 哈
後來有整理出個方法
目前應該可行
不知有無其他方式
附檔是直接把userA,userB抓進來了
(把外部資料來源省略)
欄底部分的欄位是MATCH後才填寫的
userA,userB不能填- Sub match_Click()
-
- 'Copy userA
- For i = 2 To Sheets(2).Range("A1").End(xlDown).Row
- '判別來源有無重複,且MATCH表沒有的(貼最下面)
- If Application.match(Sheets(2).Range("D" & i), Sheets(2).Range("D:D"), 0) = i And _
- IsError(Application.match(Sheets(2).Range("D" & i), Range("D:D"), 0)) = True Then
- userA_rows = Range("A65536").End(xlUp).Row + 1
- Sheets(2).Range("A" & i & ":D" & i).Copy Range("A" & userA_rows & ":D" & userA_rows)
- '判別來源有無重複,且MATCH表上有的(貼在MATCH位置)
- ElseIf Application.match(Sheets(2).Range("D" & i), Sheets(2).Range("D:D"), 0) = i And _
- IsError(Application.match(Sheets(2).Range("D" & i), Range("D:D"), 0)) = False Then
- site_A = Application.match(Sheets(2).Range("D" & i), Range("D:D"), 0)
- Sheets(2).Range("A" & i & ":D" & i).Copy Range("A" & site_A & ":D" & site_A)
- End If
- Next
- 'Copy userB
- For j = 2 To Sheets(3).Range("A1").End(xlDown).Row
- '判別來源有無重複,且MATCH表沒有的(貼最下面)
- If Application.match(Sheets(3).Range("D" & j), Sheets(3).Range("D:D"), 0) = j And _
- IsError(Application.match(Sheets(3).Range("D" & j), Range("D:D"), 0)) = True Then
- userB_rows = Range("A65536").End(xlUp).Row + 1
- Sheets(3).Range("A" & j & ":D" & j).Copy Range("A" & userB_rows & ":D" & userB_rows)
- '判別來源有無重複,且MATCH表有的(貼在MATCH位置)
- ElseIf Application.match(Sheets(3).Range("D" & j), Sheets(3).Range("D:D"), 0) = j And _
- IsError(Application.match(Sheets(3).Range("D" & j), Range("D:D"), 0)) = False Then
- site_B = Application.match(Sheets(3).Range("D" & j), Range("D:D"), 0)
- Sheets(3).Range("A" & j & ":D" & j).Copy Range("A" & site_B & ":D" & site_B)
- End If
- Next
- '與userA,userB比對 刪除沒有的
- For x = 2 To Range("A1").End(xlDown).Row
- If IsError(Application.match(Range("D" & x), Sheets(2).Range("D:D"), 0)) = True And _
- IsError(Application.match(Range("D" & x), Sheets(3).Range("D:D"), 0)) = True Then
- Rows(x).Delete
- End If
- Next
- End Sub
複製代碼
match.zip (20.51 KB)
|
|