根据楼上的代码添加而成,现在可以使没有数据的工作表隐藏,可多个姓名筛选
Sub jc()
Dim sh As Worksheet
For Each sh In Sheets
sh.Cells.AutoFilter Field:=2
sh.Visible = True
Next sh
End Sub
Sub sss()
Dim sh As Worksheet, X As Byte, st As String, cr, ar
X= Worksheets("筛选表").AutoFilter.Range.Columns(2).SpecialCells(xlCellTypeVisible).Count '查询筛选后第二列数据有几行
If k = 2 Then
ar = Cells(Worksheets("筛选表").Cells(Rows.Count, 2).End(xlUp).Row, 2)
Else
With Worksheets("筛选表").AutoFilter.Filters.Item(2)
If k = 3 Then
st = .Criteria1 & .Criteria2 '筛选只有二个条件的话.Criteria1只会存放第一个条件
Else
For Each cr In .Criteria1 '筛选条件多于二个.Criteria1会形成数组方式存放所有条件
st = st & cr
Next
End If
ar = Split(Right(st, Len(st) - 1), "=") '.Criteria存放的值前面都有=
End With
End If
For Each sh In Sheets
If sh.Name <> "筛选表" Then
sh.Cells.AutoFilter 2, ar, Operator:=xlFilterValues '筛选sh代表的工作表全部单元格第二列 ,变量ar的值
If sh.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count = 1 Then sh.Visible = False
If X<> 0 Then MsgBox "已完成": X= 0
End If
Next sh
End Sub