今天是公元: 20250605日 星期   农历: 乙巳初十 2加入收藏 | 设为首页 | 会员中心
好正好教育
您当前的位置:首页 > 科文与生活 > 软硬件学习

Excel宏:一列自动筛选打印,两列自动筛选打印

日期:2024-05-10   来源:本站整理   点击:80

两列自动筛选打印
Sub 两列自动筛选打印()
   Dim slt_col
   Dim arr, brr, i As Long
   Dim rg As Range
   Dim objDic As Object
  
   Dim slt_col2
   Dim arr2, brr2, j As Long
   Dim rg2 As Range
   Dim objDic2 As Object
  
   Set slt_rng = Application.InputBox("请选第一拆分依据列!只能选择单列!", Title:="提示", Type:=8)
   slt_col = slt_rng.Column
  
   Set slt_rng2 = Application.InputBox("请选第二拆分依据列!只能选择单列!", Title:="提示", Type:=8)
   slt_col2 = slt_rng2.Column


   MsgBox " 准备按【" & ActiveSheet.Cells(1, slt_col) & " + " & ActiveSheet.Cells(1, slt_col2) & "】列进行分类筛选,并打印"


   Set rg = ActiveSheet.Range("a1").CurrentRegion
   arr = ActiveSheet.Range("a1").CurrentRegion
   Set objDic = CreateObject("scripting.dictionary")

       Set rg2 = ActiveSheet.Range("a1").CurrentRegion
       arr2 = ActiveSheet.Range("a1").CurrentRegion
       Set objDic2 = CreateObject("scripting.dictionary")
  
   '首先按第一拆分依据列进行筛选
   For i = 2 To UBound(arr)
       objDic(arr(i, slt_col)) = ""
   Next
   brr = objDic.keys
   For i = LBound(brr) To UBound(brr)
       rg.AutoFilter field:=slt_col, Criteria1:=brr(i) '其中的“slt_col”就是第一要筛选的列
 
       '然后再按第二拆分依据列进行筛选
       For j = 2 To UBound(arr2)
           objDic2(arr2(j, slt_col2)) = ""
       Next
       brr2 = objDic2.keys
       For j = LBound(brr2) To UBound(brr2)
           rg2.AutoFilter field:=slt_col2, Criteria1:=brr2(j) '其中的“slt_col2”就是第二要筛选的列
           ActiveSheet.PrintPreview
           'ActiveSheet.PrintOut
       Next j
       rg2.AutoFilter
 
   Next i
   rg.AutoFilter

  MsgBox "【" & ActiveSheet.Cells(1, slt_col) & " + " & ActiveSheet.Cells(1, slt_col2) & "】列分类筛选打印,完成!"
End Sub

上一篇: 返回列表
下一篇: Excel退出时不提示保存的解决方法
好正好教育
相关文章
好正好教育
热门文章
  1. Excel宏:一列自动筛选打印,两列自动筛
  2. Excel批量取消超链接的方法
  3. 软件版本命名规范
  4. Excel退出时不提示保存的解决方法
好正好教育
   关于我们
服务联系
新闻公告
好正好教育
好正好软件(教育管理)
Copyright (c) 2024 好正好教育
总访问量
总IP量
最高在线
6409
2050
145
今日访问量
今日IP量
当前在线
4
3
2
18.191.33.110