与 30万 读者一起学Excel 某学员要制作一份全自动的排版表,本来劝他半手工处理,因为这种需要用VBA。不过,他觉得自己努力学也可以学会,那就来吧。 排班表 模板,将模板的内容批量生成一周的表格,比如星期三,表头就引用排班表第一行的所有数据。 来看看VBA运行后效果。 原来排班表的内容分散到好多列,不方便引用,H列采用一个辅助列将内容合并起来。日期在合并的时候会变成数字,嵌套TEXT转换成日期格式。每天有好几个记录人,用TEXTJOIN合并起来并用、隔开。
开发工具,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) |
|