|
发表于 2015-10-26 13:34
|
显示全部楼层
本楼为最佳答案
- Sub TEST()
- Application.ScreenUpdating = False
- Dim X, Y, M, N, L, ARR, ARR1(1 To 30000, 1 To 23), ARR2(1 To 30000, 1 To 23)
- Dim WB As Workbook
- Set WB = Workbooks.Open(ThisWorkbook.Path & "\数据表.xls", Password:="123456789")
- Y = WB.Sheets(1).Range("D" & Rows.Count).End(xlUp).Row
- ARR = WB.Sheets(1).Range("A3:W" & Y)
- For X = 1 To UBound(ARR, 1)
- If (ARR(X, 16) = "" And 3 <= Now - ARR(X, 14)) And ARR(X, 23) = "" And ARR(X, 4) <> "" Then
- M = M + 1
- For Y = 1 To UBound(ARR, 2)
- ARR1(M, Y) = ARR(X, Y)
- Next Y
- End If
-
- If (ARR(X, 15) = "" And 3 <= Now - ARR(X, 14)) And ARR(X, 22) = "" And ARR(X, 4) <> "" Then
- N = N + 1
- For Y = 1 To UBound(ARR, 2)
- ARR2(N, Y) = ARR(X, Y)
- Next Y
- End If
- Next X
- WB.Close True
- Set WB = Nothing
-
- With ThisWorkbook
- .Sheets(1).Range("A2:W" & Y).Clear
- If M > 0 Then .Sheets(1).Range("A2").Resize(M, 23) = ARR1
- .Sheets(1).Range("A2:W" & M + 1).Borders.LineStyle = xlContinuous
-
- .Sheets(2).Range("A2:W" & Y).Clear
- If N > 0 Then .Sheets(2).Range("A2").Resize(N, 14) = ARR2
- .Sheets(2).Range("A2:N" & N + 1).Borders.LineStyle = xlContinuous
- End With
- Application.ScreenUpdating = True
- End Sub
复制代码 |
|