AI赋能高效办公:单机版DeepSeek大模型自动生成Excel/WPS值班排班表VBA代码实战指南
等了10分钟后,发现还没好,我查看了一下思考内容,我是男女值班人员混排的,这样VBA太过复杂了,deepseek思考了10分钟,还没想好。如果在绘制按钮后没有出现“分配宏”对话框,我们插入按钮后,进入设计模式,点击按钮修改名称,然后点击查看代码。设置好表格模版,然后,让sheet3自动填上月份,简单写一个小公式,直接获取sheet1值班的月份即可,比如在sheet3的A2处直接=TEXT(shee

一、 引言:排班难题,一键解决!文末有分享链接。
- 1.1 排班的烦恼还在为每月排班头疼?人员、时间、特殊要求… 🤯 每次排班都像一场“烧脑大战”!
- 1.2 DeepSeek来帮忙今天给大家介绍一个排班神器——DeepSeek助力EXCEL/WPS表格的VBA!它能帮你轻松搞定值班表,省时省力,告别烦恼!😊
二、 准备工作:明确需求,事半功倍!
- 2.1 打开DeepSeek首先,访问DeepSeek官网(https://chat.deepseek.com/),直接使用即可。用不了,请坛子里搜索下吧。或者换用其他AI!
- 2.2 梳理值班需求在开始排班前,我们需要清晰地了解值班需求,这包括:
- 值班周期: 例如,一周、一个月?
- 值班人员: 参与值班的所有人员名单。
- 班次类型: 例如,早班、晚班、夜班?
- 特殊日期: 例如,节假日、调休?
- 人员限制: 例如,某人不能上夜班,某两人不能同时值班?
我的实战案例:①值班表不区分工作日和休息日。②男的带班领导搭配女的值班人员,女的带班领导搭配男的值班人员。③每天要求1名带班领导和2名值班人员进行值班。
三、 步骤详解:手把手教你生成值班表! (实战)
- 3.1 输入指令:告诉DeepSeek你的需求登录DeepSeek后,找到对话框或类似输入指令的地方。当然了,为了一劳永逸,建议用excel,这样,以后每个月都非常简单啦。你可以这样告诉DeepSeek:
|
|
等了10分钟后,发现还没好,我查看了一下思考内容,我是男女值班人员混排的,这样VBA太过复杂了,deepseek思考了10分钟,还没想好。所以,优化了一下,重新让AI思考。主要是将值班人员的男女表格重新列明,减少VBA的工作难度。同时,先把数据给deepseek,再告诉他值班规则,能够有效减少他阅读值班规则时候的各种假设,做出来的值班表也更具针对性。
|
|
- 3.2 调整参数:
- 精细化你的排班DeepSeek会根据你的指令生成初步的排班表。如果对结果不满意,你可以通过调整参数进行优化。例如:
- 调整班次时长: 更改早班、晚班的具体时间。
- 指定班次: 明确要求某人在某天值某个班次。
你可以继续在对话框中输入新的指令,DeepSeek会根据你的反馈进行调整。
- 3.3 生成与优化:多次尝试,直到满意不断尝试不同的指令和参数组合,直到DeepSeek生成你满意的排班表。DeepSeek的强大之处在于,它能理解你的各种要求,并智能地进行调整,避免冲突,确保排班的公平性和合理性。好了,等待了若干个10分钟后,现在献上最终的代码
|
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
|
使用方法
按Alt+F11打开VBA编辑器插入新模块并粘贴代码按需修改日期范围(当前设置为生成当月排班)按F5运行宏为了方便使用,我们可以在宏窗口插入一个按钮,点击直接运行宏,这样更加方便。比如:点击“开发者”选项卡。在“控件”组中,点击“插入”按钮。在下拉菜单中选择“表单控件”(如果是旧版Excel,直接选择“按钮”)。在工作表上拖动鼠标绘制一个按钮。如果在绘制按钮后没有出现“分配宏”对话框,我们插入按钮后,进入设计模式,点击按钮修改名称,然后点击查看代码。修改该按钮的代码如下,即可实现点击运行啦
|
1
2
3
|
Private Sub CommandButton1_Click()
Call GenerateDutySchedule
End Sub
|
2025年2月24日更新完善一下,重新调整了代码
增加了一些细节调整:
1.调整运行按钮至SHEET2页面,因为上次值班的人员还是手动输入,防止出现错误不懂的人不会改。此外,由于VBA的名称变了,且从sheet2要调用sheet1的VBA代码,这个按钮的代码也小改了一下。
|
1 2 3 4 |
|
2.单列的表格不方便打印,新增sheet3,将值班表变为A4纸直接打印的多列横表。
设置好表格模版,然后,让sheet3自动填上月份,简单写一个小公式,直接获取sheet1值班的月份即可,比如在sheet3的A2处直接=TEXT(sheet1!A2,"m月")
再通过一个简单公式,先把日期都显示出来,比如A3=TEXT(sheet1!A2,"d日") ,是不是和月份显示有异曲同工之妙。哈哈
=TEXT(sheet1!A2,"d日")
然后,按照顺序填充,到A11=TEXT(sheet1!A12,"d日")。然后修改一下公式,E3=TEXT(sheet1!A13,"d日"),继续填充,以此类推,全部填充完成。
最后,让显示0日的这些不显示。这个操作比较复杂了,让我们问一问deepseek吧。简单的思考后,deepseek竟然给出了我两种方法。
于是,我们直接在I9,也就是这个月的29日这一表格输入公式=IF(sheet1!A30="","",TEXT(sheet1!A30,"d日"))然后依次填充至最下面一行。即I12=IF(sheet1!A33="","",TEXT(sheet1!A33,"d日"));I13=IF(sheet1!A34="","",TEXT(sheet1!A34,"d日"))
值班人员同理。以J9为例:=IF(sheet1!B30="","",sheet1!B30)。
最终实现的效果就是sheet2页输入值班人员信息和最后一次值班信息,然后就能在sheet3直接看到最终值班表了。最终成品还是放在原链接不变。
我用夸克网盘分享了「无需网络快速部署deepseek」
链接:https://pan.quark.cn/s/137e40c5d8fa
更多推荐


所有评论(0)