- 帖子
- 254
- 主題
- 6
- 精華
- 0
- 積分
- 310
- 點名
- 0
- 作業系統
- W10
- 軟體版本
- Excel 2016
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2019-6-16
- 最後登錄
- 2025-6-21
|
本帖最後由 軒云熊 於 2021-4-5 23:09 編輯
回復 5# agietron
有空幫我試試看 是不是你要的 但我不確定是不是正確 因為我的結果跟你的結果不一樣 而且迴圈也比較多 看看有沒有大大願意幫忙- Public Sub 跨工作表比對練習()
- Application.ScreenUpdating = False
- [A:K].ClearContents
- Set xD = CreateObject("Scripting.Dictionary")
- Brr = Range([工作表1!O65535].End(3), [工作表1!O1])
- For X = 1 To UBound(Brr, 1)
- xD(Brr(X, 1)) = ""
- Next X
- DSC = InputBox("輸入折扣%", "折扣", "60")
- For E = 1 To Sheets.Count - 1
- Arr = Sheets(E).UsedRange
- For X = 2 To UBound(Arr, 1)
- For Y = 1 To UBound(Arr, 2)
- If Arr(X, 1) <> "" And Len(Arr(X, Y)) > 7 And xD.exists(Arr(X, Y)) Then
- With Sheets("工作表1")
- K = K + 1: N = ""
- Select Case Left(Arr(X, Y), 1)
- Case "C"
- G = "S220"
- Case "M"
- G = "M520"
- Case "M"
- G = "N620"
- Case "N"
- G = "S220焊接"
- Case "A"
- G = "HSS"
- Case "H"
- G = "HSS-Co"
- Case "S"
- G = "SKH"
- End Select
- xD.Remove (Arr(X, Y))
- For S = 1 To 6
- If Arr(2, S) <> "" Then N = N & Arr(2, S) & Arr(X, S) & " * "
- Next S
- Range("A" & K) = K
- Range("B" & K) = G
- Range("C" & K) = Arr(1, 1) & "-" & Sheets(E).Name & "-" & " " & "第" & X & "列" & Chr(10) & Mid(N, 1, Len(N) - 3)
- Range("I" & K) = WorksheetFunction.Round(((Arr(X, Y + 1) * DSC) / 100), -1)
- Range("J" & K).Formula = "=sum(i" & K & "*h" & K & ")"
- Range("K" & K) = Arr(X, Y)
- End With
- End If
- Next Y
- Next X
- Next E
- Application.ScreenUpdating = True
- End Sub
複製代碼
0405.rar (141.9 KB)
|
|