没有特别清楚的明白你的意思,最后是要自动生成几百个这样的工资条工作表吗?还是单独的工作薄文件?
我有一个方法,但是需要更改你的工资条格式为只有一行的形式。最后的结果是生成多个工资条工作表,工作表可以用序号姓名电话的方式保存。如果需要是分开的工作薄,就需要宏代码来实现了,我也有,只是多了一步。
用到的操作有,原始数据的简单整理(添加辅助列、添加中文金额)、数据透视表、宏。
1,数据整理
中文金额使用如下公式(我的金额数字在D2,你的看在哪里可以直接替换为相应的单元格):
=IF(D2=0,"",IF(D2<0,"负","")&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXT(INT(ABS(D2)),"[DBNum2]")&"元"&TEXT(RIGHT(TEXT(D2,".00"),2),"[DBNum2]0角0分"),"零角零分","整"),"零分","整"),"零角","零"),"零元零",""))
添加辅助列:
辅助列是用来整你要的文件名的。直接使用&符号连接序号姓名工资就可以。
2,选中这些数据,建立数据透视表,并使用数据透视表“显示报表筛选页”来分离成多个工作表。
各行列标签设置如下图,记得要在数据透视表的设计选项卡里设置无分类汇总无总计并更改表格样式。
使用显示报表筛选页分来每个工资条。
然后就有很多个分开的表格啦。
如果是要打印,你可以选中所有工作表,这些工作表就变成工作组,在任意一个工作表中删除前两行,所有表格就都没有前两行了。
3.如果一定要分开的工作薄,需要使用宏代码来实现。
操作是:开发工具——Visual Basic(或者Alt+11)打开 VBA 页面——插入——模块——编辑框中粘贴以下代码——点击那个绿色的站立的三角形运行。(平时在网上找到的其他代码,你也可以这样插入运行,不会写代码也可以用。)
Sub newbooks()
Dim sht As Worksheet, mypath$
Application.DisplayAlerts = False
'取消显示系统警告和消息
Application.ScreenUpdating = False
'取消屏幕刷新
With Application.FileDialog(msoFileDialogFolderPicker)
'选择保存工作薄的文件路径
.AllowMultiSelect = False
'不允许多选
If .Show Then
mypath = .SelectedItems(1)
'读取选择的文件路径
Else
Exit Sub
'如果没有选择保存路径,则退出程序
End If
End With
If Right(mypath, 1) <> "" Then mypath = mypath & ""
For Each sht In Worksheets
'遍历工作表
sht.Copy
'复制工作表,工作表单纯复制后,成为活动工作薄
With ActiveWorkbook
.SaveAs mypath & sht.Name, xlWorkbookDefault
'保存活动工作薄到指定路径下
.Close True '关闭工作薄
End With
Next
MsgBox "处理完成。", , "提醒"
Application.ScreenUpdating = True '恢复屏幕刷新
Application.DisplayAlerts = True '恢复显示系统警告和消息
End Sub
我VBA学的也不太行,操作也有些复杂了,有问题欢迎追问,希望可以帮到你。