- 帖子
- 254
- 主題
- 6
- 精華
- 0
- 積分
- 310
- 點名
- 0
- 作業系統
- W10
- 軟體版本
- Excel 2016
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2019-6-16
- 最後登錄
- 2025-6-21
|
本帖最後由 軒云熊 於 2021-4-8 17:01 編輯
回復 1# PJChen
有空幫我試試看是不是你要的結果 會很慢因為迴圈太多了 看看有沒有大大願意幫忙 感謝- Public Sub 跨工作簿比對並移動練習()
- Application.ScreenUpdating = False
-
- Sheets.Copy After:=Sheets(Sheets.Count)
- For X = [H65535].End(3).Row To 1 Step -1
- If IsError(Cells(X, "H")) Then
- Rows(X).Delete
- End If
- Next X
- Range([A65535].End(3), [A4]).Sort [A4], 1, Header:=2
-
-
- Set xD = CreateObject("Scripting.Dictionary")
- Arr = Range([A65535].End(3), [A1])
-
- Application.DisplayAlerts = False
- Sheets(Sheets.Count).Delete
- Application.DisplayAlerts = True
-
- For X = 1 To UBound(Arr, 1)
- xD(Arr(X, 1)) = Trim(xD(Arr(X, 1)) & " " & X)
- Next X
- Erase Arr
-
- A = Dir("T:\0_自訂表單\日常表格\*.xlsx")
- Workbooks.Open "T:\0_自訂表單\日常表格\" & A & ""
- Set W = Workbooks("商品2.xlsm").Sheets(1)
-
- For E = 1 To Sheets.Count
- N = Sheets(E).Name: Sheets(E).Activate
- If IsNumeric(N) Then
- If Int(N) > W.[M2] Then Exit For
- If Int(N) >= W.[M1] And Int(N) <= W.[M2] Then
- Arr = ActiveSheet.UsedRange
- For X = 1 To UBound(Arr, 1)
- For Y = 1 To UBound(Arr, 2)
- If Arr(X, Y) = "料號" Then
- Brr = Range(Cells(1, Y), Cells(Rows.Count, Y).End(3))
- GoTo A01
- End If
- Next Y
- Next X
- A01: Y = Y: Erase Arr
-
- For Each D In xD
- SR = Split(xD(D), " ")
- For Each S In SR
- SInt = Int(S)
- For Z = UBound(Brr) To 1 Step -1
- On Error Resume Next
- If D <> Empty Then
- If D = Brr(Z, 1) Then
- Rows(Z).Cut
- Rows(SInt).Insert , 1
- Brr = Range(Cells(1, Y), Cells(Rows.Count, Y).End(3))
- Exit For
- End If
- End If
- On Error GoTo 0
- Next Z
- Next S
- Next D
-
- End If
- End If
- Next E
-
- Application.ScreenUpdating = True
- End Sub
複製代碼
商品20408.rar (38.23 KB)
|
|