- 帖子
- 2843
- 主題
- 10
- 精華
- 0
- 積分
- 2899
- 點名
- 0
- 作業系統
- 〔略〕
- 軟體版本
- 〔略〕
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 〔略〕
- 註冊時間
- 2013-5-13
- 最後登錄
- 2025-5-31
|
6#
發表於 2020-3-25 12:21
| 只看該作者
有點複雜, 自行參酌~~
- Sub TEST()
- Dim Arr, xD(3), d1, d2, i&, j&, k%, U%, Ur, Srr, xS As Worksheet
- For j = 0 To 3: Set xD(j) = CreateObject("Scripting.Dictionary"): Next j
- Arr = [L2:M30]
- For j = 1 To 2: For i = 1 To UBound(Arr)
- If Arr(i, j) <> "" Then xD(0)(Arr(i, j)) = j
- Next: Next
- '--------------------------------
- Arr = Range([J1], Cells(Rows.Count, 1).End(xlUp))
- For i = 2 To UBound(Arr)
- d1 = Arr(i, 3): d2 = Arr(i, 4)
- If IsDate(d1) * IsDate(d2) = 0 Then GoTo 101
- U = xD(0)(Arr(i, 2)) + 1
- For j = d1 To d2 - 1
- Ur = xD(U)(j)
- If Not IsArray(Ur) Then Ur = Array(CDate(j), 0, 0, 0, 0, 0, 0)
- For k = 5 To 10: Ur(k - 4) = Ur(k - 4) + Arr(i, k): Next k
- xD(U)(j) = Ur
- Next j
- 101: Next i
- '--------------------------------
- Srr = Array("", "一般", "特殊1", "特殊2")
- For k = 1 To 3
- With Sheets(Srr(k))
- .UsedRange.Offset(1, 0).EntireRow.Delete
- U = xD(k).Count: If U = 0 Then GoTo 102
- With .[B2:H2].Resize(U)
- .Value = Application.Transpose(Application.Transpose(xD(k).items))
- .Sort Key1:=.Item(1), Order1:=xlAscending, Header:=xlNo
- End With
- End With
- 102: Next k
- End Sub
複製代碼
Xl0000054.rar (21.99 KB)
============================== |
|