- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
回復 1# amu1129 - Sub Ex()
- Dim AR, d As Object, Rng As Range, E, i%, Sh$, DKey
- Set d = CreateObject("Scripting.Dictionary")
- With Sheet1
- AR = Split(.[B1], ",")
- For i = 0 To UBound(AR)
- For Each E In .Range("B4", .[B4].End(xlDown))
- If .Cells(E.Row, "F") = AR(i) Then
- d(E & E.Offset(, 1)) = Array(AR(i), E.Offset(, 1), E.Offset(, 5))
- If InStr(Sh, E) = 0 Then Sh = IIf(Sh <> "", Sh & "," & E, E)
- End If
- Next
- Next
- End With
- i = 2
- For Each E In Split(Sh, ",")
- On Error GoTo Er
- With Sheets(i)
- .Cells.Clear
- .[B2] = E
- .[B4].Resize(, 3) = Array("尺寸", "編號", "數量")
- For Each DKey In d.keys
- If DKey Like E & "*" Then
- With .Range("b" & Rows.Count).End(xlUp).Offset(1)
- .Resize(, 3) = d(DKey)
- .Offset(, -1) = .Row - 4
- End With
- End If
- Next
- With .Range("b" & Rows.Count).End(xlUp)
- .Offset(1) = "合計"
- .Offset(1, 2) = Evaluate("=SUM(" & .Offset(, 2).Address(, , , 1) & ":D5)")
- End With
- .Range("B4").CurrentRegion.Borders.LineStyle = 1
- End With
- i = i + 1
- Next
- Exit Sub
- Er:
- If Err = 9 Then
- Sheets.Add , Sheets(Sheets.Count)
- Resume
- Else
- MsgBox Err
- End If
- End Sub
複製代碼 |
|