Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3836|回复: 11

[已解决]一个Excel多个sheet一起筛选如何操作,没人有时间看的话,我过几天在求助求助!

[复制链接]
发表于 2017-9-30 10:08 | 显示全部楼层 |阅读模式
求教:
一个Excel多个sheet一起筛选如何操作!
谢谢!
最佳答案
2017-9-30 16:55
根据楼上的代码添加而成,现在可以使没有数据的工作表隐藏,可多个姓名筛选
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

一个Excel多个sheet一起筛选如何操作.rar

122.44 KB, 下载次数: 20

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-9-30 13:50 | 显示全部楼层
只筛选一个人

一个Excel多个sheet一起筛选如何操作.rar

81.53 KB, 下载次数: 15

回复

使用道具 举报

 楼主| 发表于 2017-9-30 16:48 | 显示全部楼层
回复

使用道具 举报

发表于 2017-9-30 16:55 | 显示全部楼层    本楼为最佳答案   
根据楼上的代码添加而成,现在可以使没有数据的工作表隐藏,可多个姓名筛选
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
回复

使用道具 举报

发表于 2017-9-30 18:01 | 显示全部楼层

刚看了一下条件在补充一下吧,同时的话还不知道怎么做,不过用选取单元格事件稍微可以达成那个意思,只要楼主你筛选后谁便选择一个单元格
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Sheets("筛选表").FilterMode = False Then
  Call jc
Else
  Call sss
End If
End Sub
回复

使用道具 举报

 楼主| 发表于 2017-10-1 10:26 | 显示全部楼层
0126 发表于 2017-9-30 16:55
根据楼上的代码添加而成,现在可以使没有数据的工作表隐藏,可多个姓名筛选
Sub jc()
    Dim sh As Work ...

您好:
       我运行后,显示类型不匹配的,请问怎么解决这个情况的
回复

使用道具 举报

发表于 2017-10-3 15:41 | 显示全部楼层
lurongbing 发表于 2017-10-1 10:26
您好:
       我运行后,显示类型不匹配的,请问怎么解决这个情况的

刚看到,情况解决了吗,是运行到哪里不匹配
回复

使用道具 举报

发表于 2017-10-3 16:11 | 显示全部楼层
学习一下
回复

使用道具 举报

 楼主| 发表于 2017-10-4 10:17 | 显示全部楼层
0126 发表于 2017-10-3 15:41
刚看到,情况解决了吗,是运行到哪里不匹配

我这边选择多个姓名时,运行可以,当我选择一个名字时,显示类型不匹配,如下:

截图如下.jpg
回复

使用道具 举报

发表于 2017-10-4 12:54 | 显示全部楼层
lurongbing 发表于 2017-10-4 10:17
我这边选择多个姓名时,运行可以,当我选择一个名字时,显示类型不匹配,如下:


额,变量名错了,这个代码里面的变量k改成变量x就行,
这个就是要判定上面那个变量x的所以系统判定后会运行到最后那个没有写判断条件的处理数组的代码,只有一个条件的话形成不了数组,所以报错,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-17 00:44 , Processed in 0.322355 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表