ymhld 发表于 2019-12-1 12:47

用excel VBA 解决编排考场问题,解决对角相邻,加入蛇形排列,更实用

本帖最后由 ymhld 于 2019-12-9 14:26 编辑

首次在编程语言区发帖,比不得大佬们,也不知道发这里合适不,不合适请版主删除;以解决问题为主;
1、问题的提出:

https://www.52pojie.cn/thread-1064857-1-1.html
有坛友发问:15个班 ,每班约65人安排15个考场   考场7列9排 ;同班学生两两不相邻相邻同学成绩相差不大
2、问题的思考:
当时以为问题很简单,用excel表格的公式就能处理得了,但深入研究后发现,同班学生两两不相邻要涉及数据交换,用excel表格很难解决
于是动起了excel VBA的主意
其实也很简单,就是从第二名开始,与前排的人,前序号的人的班级不相同,即可解决(但有可能是斜对角是同一班级的)新的表格解决了斜对角相邻的问题,
如下图:即第N+2的同学,即不能与第2位(即前一排),也不能与N+1位同学(前一座)是同班级,如果同班级,则与N+3的同学调换,如果N+3的同学也不合适
就继续找下一个,直至找到最后;如果一直找不到,则把这位同学放在最后


后续加入了蛇形排列和斜形排列,更符合实际实用情况,链接见帖子下方






原始表格

3、excel VBA 运行


4、运行最后效果


完全满足要求。
最后的表格:
https://www.lanzouj.com/i7rjvgf

出点小问题,又改了一下
https://www.lanzouj.com/i7rmtni

解决了斜对角相邻的问题
https://www.lanzouj.com/i7wnkuh

加入了蛇形排列和斜形排列(斜形不算太成功)

https://www.lanzouj.com/i7x0j8h

第一版时打开excel宏设置及运行的录像

https://www.lanzouj.com/i7rdvkd

ymhld 发表于 2020-1-10 15:20

herevol 发表于 2020-1-10 14:05
同班学生两两不相邻,两班插花或者三班四班插花,其实可以给定义一个序号,按成绩排序,一班序号为1,A1+班 ...

恩,我这个是按人家要求的意思排的,你的意思我明白,要是不按成绩,直接这么编排是可以的

ymhld 发表于 2019-12-1 16:48

向往的歌 发表于 2019-12-1 15:52
楼主,能不能编一个VBA?把多张工作簿合并成一张工作簿?

搜搜论坛的合并大师,有能用的工具尽量用工具,这是没办法了才编的

miqi1314 发表于 2019-12-1 12:49

厉害,佩服

ymhld 发表于 2019-12-1 12:52

miqi1314 发表于 2019-12-1 12:49
厉害,佩服

班门弄斧了,向各位大佬们学习

Xxj1112 发表于 2019-12-1 13:42

太厉害了

向往的歌 发表于 2019-12-1 13:51

楼主真大神也!有机会请教请教哟!

vethenc 发表于 2019-12-1 13:58

感谢分享,原创作品

ilpj 发表于 2019-12-1 14:12

学习了,感谢楼主分享。{:1_893:}

wihite2018 发表于 2019-12-1 14:46

cherrypi 发表于 2019-12-1 15:19

虽然用不到,但是还是谢谢楼主。

向往的歌 发表于 2019-12-1 15:52

本帖最后由 向往的歌 于 2019-12-1 18:03 编辑

楼主,能不能编一个VBA?把多张工作簿合并成一张工作簿?
页: [1] 2 3
查看完整版本: 用excel VBA 解决编排考场问题,解决对角相邻,加入蛇形排列,更实用