Call delsheet Dim temparray() As String, col As String, row As Integer,i as Integer, criteriadata As Variant Dim wb As Workbook, ws As Worksheet Set wb = ThisWorkbook Set ws = wb.Sheets("工作表1") Application.ScreenUpdating = False
col = "b" row = 3
With ws
.Range(col & ":" & col).AdvancedFilter Action:=xlFilterInPlace, Unique:=True Set allcriteria = .Range(ws.Cells(row, col), ws.Cells(row, col).End(xlDown)).SpecialCells(xlCellTypeVisible) ReDim temparray(1 To allcriteria.Count) For Each criteriadata In allcriteria i = i + 1: temparray(i) = criteriadata Next
row = row - 1
For Each criteriadata In temparray Sheets.Add(After:=Sheets(Sheets.Count)).Name = "_" & criteriadata & "_" .Range(ws.Cells(row, col), ws.Cells(row, col).End(xlDown)).AutoFilter Field:=1, Criteria1:=criteriadata .UsedRange.Copy Sheets("_" & criteriadata & "_").Cells(1, 1) Next .AutoFilterMode = False .Select End With
Application.ScreenUpdating = True
End Sub
Sub delsheet()
Application.DisplayAlerts = False
Dim delsheet() As Variant, protect() As Variant, i As Integer, j As Integer ReDim delsheet(1 To Worksheets.Count)