文档库 最新最全的文档下载
当前位置:文档库 › excel 根据任意列内容筛选批量打印

excel 根据任意列内容筛选批量打印

Sub 根据任意列内容筛选批量打印()
Dim d
Dim arr
Dim i%, nrow%, s%
Dim a As String, j As String, k As String

a = InputBox("请输入所需筛选的列,例子如:A列开始,就输入数字1", "输入序号 ")

j = InputBox("请输入数据区域,例如第二行A2为所需筛选列的下一列,那么输入:A3:Z")

k = InputBox("请输入自动筛选(标题行),例如第二行:2:2")



dyn = a '先设置要打印的列号,比如F列的列号就是6,

'dyn = [j2].Value '先设置要打印的列号,比如F列的列号就是6,

nrow = Range("A65536").End(3).Row '第1列最后可见非空单元行号(A列分类)

arr = Range(j & nrow) '在这里修改你的数据范围

s = UBound(arr) '一维数组最后项数

Set d = CreateObject("Scripting.Dictionary") '创建字典对象

For i = 1 To s '循环数组各项
d(arr(i, dyn)) = "" '将打印列对应的项目 纳入字典
Next

Range(k).AutoFilter '选择第2行自动筛选(标题行在第2行)

'Range("2:2").AutoFilter '选择第2行自动筛选(标题行在第2行)

For i = 1 To d.Count '循环字典项

Selection.AutoFilter Field:=dyn, Criteria1:=Application.Index(d.keys, 0, i) 'Field:=dyn,这里改为了变量,即要打印的列。以字典各项自动筛选
ActiveWindow.SelectedSheets.PrintPreview '打印预览 'Printout 打印当前表 'Copies:=1 '打印指定工作表1份
Next


Selection.AutoFilter '取消自动筛选,全部显示


Set dyn = Nothing

End Sub





相关文档
相关文档 最新文档