“排班表全自动的比公式复杂100倍” “不过,努力学也可能学会”
与 30万 读者一起学Excel
某学员要制作一份全自动的排版表,本来劝他半手工处理,因为这种需要用VBA。不过,他觉得自己努力学也可以学会,那就来吧。
排班表
模板,将模板的内容批量生成一周的表格,比如星期三,表头就引用排班表第一行的所有数据。
来看看VBA运行后效果。
原来排班表的内容分散到好多列,不方便引用,H列采用一个辅助列将内容合并起来。日期在合并的时候会变成数字,嵌套TEXT转换成日期格式。每天有好几个记录人,用TEXTJOIN合并起来并用、隔开。
=TEXT(A2,"e年m月d日 ")&B2&" 班级纪律检查情况记录 记录人:"&TEXTJOIN("、",1,C2:G2)
开发工具,VB,插入模板,输入代码。
Sub 排班()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'将多余的工作表删除
For X = Sheets.Count To 3 Step -1
Sheets(X).Delete
Next
With Sheets("排班表")
For X = 2 To .Cells(Rows.Count, 1).End(3).Row
'相当于移动或复制模板这个工作表到最后,并建立副本
Sheets("模板").Copy After:=Sheets(Sheets.Count)
'激活的工作表名称根据排班表的B列命名
ActiveSheet.Name = .Cells(X, 2)
'激活的工作表A1根据排班表的H列引用数据
[A1] = .Cells(X, 8)
Next
.Select
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
最后,使用VBA的,都需要启用所有宏。
VBA除了难,没啥缺点。
一次报名成为VIP会员,所有课程永久免费学,采用录制视频+微信答疑的形式学习,仅需888元,待你加入。
上篇:为什么我的透视表老是出问题,一下子不能求和、一下子不能筛选、一下子不能排序。。。
你做过排班表吗,用什么方法?
作者:卢子,清华畅销书作者,《Excel效率手册 早做完,不加班》系列丛书创始人,个人公众号:Excel不加班(ID:Excelbujiaban)