专栏名称: VBA编程实战
Excel应用案例、Excel VBA、公式函数使用技巧分享,思路解读...... 这里有鲜活案例、实用的技巧......
目录
相关文章推荐
康石石  ·  我在米理PSSD,学校就业第一实锤 ·  23 小时前  
康石石  ·  10w够去日本艺术留学吗 ·  昨天  
康石石  ·  拿到设计奖和留学offer后,我决定GAP了 ·  3 天前  
康石石  ·  美国也有一年制STEM硕士哦~ ·  6 天前  
康石石  ·  没忍住,分享下华为ID 设计岗面试真题 ·  6 天前  
51好读  ›  专栏  ›  VBA编程实战

Excel VBA【案例】循环数组,班级课表生成总课表|字典、数组、SortedList

VBA编程实战  · 公众号  ·  · 2024-02-28 22:21

正文

欢迎点击标题下蓝色文字关注本公众号,谢谢!

快速浏览

往期合集:【2023年全年2024年1月

实用案例

|日期控件||简单的收发存||收费管理系(Access改进版)|

|电子发票管理助手||电子发票登记系统(Access版)|

|文件合并||表格拆分||审计凭证抽查底稿|

|中医诊所收费系统(Excel版)||中医诊所收费系统(Access版)||银行对账单自动勾对|

|印章使用登记系统|

收费使用项目

|财务管理系统||工资薪金和年终奖个税筹划||新税法下工资表模版|

内容提要

  • 班级课表生成总课表
  • 字典、数组、SortedList综合应用

大家好,我是冷水泡茶。

昨天在论坛上看到一个求助贴:根据班级课表制作总功课表

问题说明:

1、数据源是班级课表。

2、程序根据班级课表全自动制作总功课表说明:

(1)点生成总功课表后程序在班级课表后自动插入总功课表并填写相对应的数据(附件中人工填写了行标题和第1个班级课的数据)

(2)班级课表的内容改变了,程序也能正常运行。

(3)班级课表的个数增加或减少后程序也能运行。

(4)班级课表中课节数增加或减少后程序也能运行。

他的数据表格是这样子的:

1、班级课表,每个班的课表,下面还有很多班级,而且顺序有点乱,不是自然排序:

2、结果表,总功课表,每个星期的所有课程横向排列,每个班级一行记录:

关于排课表,我们也分享过好几个案例:

(1)课程总表批量生成班级排课表

(2)从总课表汇总每名教师任教情况

(3)学校排课表冲突重复提示

(4)学校总课表格式重排

(5)合并课程表中相同课程

基本思路:

1、说到底,这就是一个数据格式重排问题,我们抓住关键因素,找到最终对应的明细数据,也就是课程,随便格式怎么转换,我们都可以通过班级、星期、课次等关键字段,对应到唯一的课程名称。
2、我们先把班级课表装入数组arr。
3、我们循环arr,把班级装入名为classList的SortedList,使得班级按顺序排列。
4、我们把时段、课次装入字典dicSession,作为表头字段;把班级、星期、时段、课次组合成一个key,装入一个字典dic,课程名称作为字典的item。
5、我们重定义一个数组arrtemp,与预期的总功课表一般大小,把classList写入arrtemp第一列、把星期一星期日写入arrtemp第一行,dicSession的key分列后,分别写入数组第2、3行。
6、根据数组的第1列和1~3行组合成dic的key,到dic中提取数据,写入数组的各个单元格。
7、设置表头合并单元格,这里使用了一个自定义函数myMerge,参考我们分享的案例【一键合并相同内容单元格】。同时设置单元格的对齐、划线等格式。


VBA代码

代码见第二条推文。

后记

1、在原表的“班级课表”中,有许多空格,虽然我用了一个自定义函数来去除空格,但是还是有些空格去不掉,搞不清是什么原因,有知道的朋友请在评论区留言;最后实在没办法,我就把“班级课表”中的空格手工删除了。

2、“总功课表”的表头是自动生成的,没有用他原来填好的表头,原因考虑到每周的课次可能有增减(这也是需求的一部分)。

3、这里每周上课的天数是7天,我们也考虑到如果不是7天,也能正常运行。

4、这里班级名称是数字+“班”,目前是1~9班,如果有两位数以上的班级名称,排序可能就会有点问题,我们通过Val、Format函数把班级前面的数字处理成相同位数,使得排序正常准确,但这样又带来另外的问题,如果班级名称还有其他文本,那就有问题了,那代码就需要改一下。

好,今天就到这,我们下期再会。

~~~~~~End~~~~~~

安利小店
安利的牙膏非常不错,用了以后就不想再用其他的了;洗洁精洗衣液也是日常必备,用过都说好!

合谷医疗
合谷医疗专攻各种疑难杂症,尤其擅长腰颈椎疾病、儿童神经发育异常多动症自闭孤独症治疗,可谓神乎其技!体验过的直呼早点来就好了

我的付费知识星球:Excel活学活用
帮助VBA初学者提高VBA编程水平,欢迎加入!

喜欢就点个、点在看留言评论、分享一下呗!感谢支持!

案例文件分享说明

  • 案例文件可免费分享,但需符合以下要求:

  • 关注点赞点在看点广告留言,方便的话分享一下就完美啦!如果不便走上面的“流程”,请打赏,万分感谢!

  • 请添加上方我的合谷医疗企业微信,案例文件通过微信发送。如有定制需求,亦可通过微信联系。

  • Excel问题,请在文章下面留言讨论!或者加入我的付费知识星球免费提问