excel表格如何逐页打印表格中的不同名字等内容?

比如我一个表格里有很多人名,不同组别,我要打印的是厂名一样,后面的日期一样,但是中间固定位置的名字和组别不一样,然后要每张一个名字逐页打印,这如何设置?

可以使用VBA来实现这一功能。以下是一个VBA示例代码,它会根据厂名和日期筛选数据,并根据不同的名字和组别逐页打印。
打开Excel,按Alt + F11进入VBA编辑器。
插入一个新模块(点击“插入”>“模块”)。
将以下代码粘贴到模块中:
Sub PrintByNameAndGroup()
Dim ws As Worksheet
Dim lastRow As Long
Dim rng As Range
Dim nameCol As Long, groupCol As Long, factoryCol As Long, dateCol As Long
Dim uniqueNames As Collection
Dim i As Long
Dim name As Variant

' 设置工作表
Set ws = ThisWorkbook.Sheets("Sheet1") ' 修改为你的工作表名称
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

' 设置列号(假设名字在A列,组别在B列,厂名在C列,日期在D列)
nameCol = 1
groupCol = 2
factoryCol = 3
dateCol = 4

' 获取筛选范围
Set rng = ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column))

' 创建集合存储唯一名字和组别
Set uniqueNames = New Collection

On Error Resume Next
For i = 2 To lastRow
' 筛选符合条件的记录
If ws.Cells(i, factoryCol).Value = "你的厂名" And ws.Cells(i, dateCol).Value = "你的日期" Then
uniqueNames.Add ws.Cells(i, nameCol).Value & "|" & ws.Cells(i, groupCol).Value, _
CStr(ws.Cells(i, nameCol).Value & "|" & ws.Cells(i, groupCol).Value)
End If
Next i
On Error GoTo 0

' 遍历唯一名字和组别,逐页打印
For Each name In uniqueNames
Dim nameGroup As Variant
nameGroup = Split(name, "|")

' 筛选数据
rng.AutoFilter Field:=nameCol, Criteria1:=nameGroup(0)
rng.AutoFilter Field:=groupCol, Criteria1:=nameGroup(1)

' 打印当前筛选的记录
ws.PrintOut

' 清除筛选
ws.AutoFilterMode = False
Next name
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2024-06-27
可以利用word做模板,使用邮件合并来完成您的工作。具体可以参考

使用邮件合并,做高效率青年 (qq.com)
相似回答