ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 达州张先生

[求助] 如何按成绩和性别分班

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2014-7-24 22:33 | 显示全部楼层
如果分5个班,我觉得按下面顺序更公平点
1234554321  2345115432  3451221543  4512332154  5123443215

TA的精华主题

TA的得分主题

发表于 2014-7-24 22:35 | 显示全部楼层
夏秋梦 发表于 2014-7-24 22:27
谢谢aoe1981大侠的回答,我做教务大约有10年时间,分班更不止10年,分班的好坏对班主任和授课教师,甚至整 ...

呵呵,现在我们来捋一捋我们的指标或条件:1.成绩;2.性别;3.重名;4.人情择班(可能有正常的,呵呵);5.家境特殊;6.性格难管;7.弱智……看来,这项工作要完全交由计算机量化完成,确实不容易……当然,我不排除有这种实现的可能,这些指标还是可以量化的,或者分等分级的……这个首先要有规范的数据源,利用代码识别、处理的数据源……

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-7-24 22:37 | 显示全部楼层
liyunfei099 发表于 2014-7-24 22:33
如果分5个班,我觉得按下面顺序更公平点
1234554321  2345115432  3451221543  4512332154  5123443215

同感,我用这种1234554321  2345115432  3451221543  4512332154  5123443215的方法分班好多年了

TA的精华主题

TA的得分主题

发表于 2014-7-24 22:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
aoe1981 发表于 2014-7-24 22:35
呵呵,现在我们来捋一捋我们的指标或条件:1.成绩;2.性别;3.重名;4.人情择班(可能有正常的,呵呵); ...

aoe1981你好,这个假期,我们校大约400多人新生,分班时主要做到三点,成绩公平、男女搭配均匀(便于安排寝室,寝室非常紧张)、刚才提到的那几类学生一定要分均匀。同名同姓,姓名同音的,是次要的。关系户最难办,我们一般是这样:定了班主任、班主任抽签分了学生再分关系户,关系户先拿出来,接下来的事情好麻烦,仍然要成绩公平、男女搭配均匀……,不然班主任不准。

TA的精华主题

TA的得分主题

发表于 2014-7-24 23:05 | 显示全部楼层
香川群子 发表于 2014-7-24 21:51
分班条件:
1、先男生后女生分开,然后按总分从高到低排序后依名次顺序分班。力争各班成绩搭配均匀。
2、假 ...

香川,其中一个数组第一维的上下标定义的很巧妙,-1、0、1、2……n-1,俺服了油,专业啊!

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-7-24 23:31 | 显示全部楼层
香川群子 发表于 2014-7-24 22:05
发现我的代码计算耗时,还包括了重新排序的时间。

如果不算排序时间(事先已经排序完成),那么我的代码 ...

如果是 1234554321  2345115432  3451221543  4512332154  5123443215,程序该怎么改?

点评

不是我吹牛,我的数组算法,一般人他想不出来……!  发表于 2014-7-24 23:52

TA的精华主题

TA的得分主题

发表于 2014-7-24 23:44 | 显示全部楼层
本帖最后由 香川群子 于 2014-7-24 23:50 编辑
夏秋梦 发表于 2014-7-24 22:37
同感,我用这种1234554321  2345115432  3451221543  4512332154  5123443215的方法分班好多年了

那样的话,班级参数该按以下方式计算了:
  1. Sub test()
  2.     k = 5
  3.     For t = 0 To 99        
  4.         If (t \ k) Mod 2 Then c = (t \ (k * 2) + k - 1 - t Mod k) Mod k Else c = (t + t \ (k * 2)) Mod k
  5.         If t Mod k * 2 = 0 Then s = s & vbCr & c Else s = s & c
  6.     Next
  7.     MsgBox s
  8. End Sub
复制代码
也可以用Int:
If (t \ k) Mod 2 Then c = (Int(t / k / 2) + k - 1 - t Mod k) Mod k Else c = (t + Int(t / k / 2)) Mod k


结果为:


0123443210
1234004321
2340110432
3401221043
4012332104
0123443210
1234004321
2340110432
3401221043
4012332104

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-7-24 23:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
aoe1981 发表于 2014-7-24 23:05
香川,其中一个数组第一维的上下标定义的很巧妙,-1、0、1、2……n-1,俺服了油,专业啊!

【如果是 1234554321  2345115432  3451221543  4512332154  5123443215,程序该怎么改?】

你不许看我的抄我的,自己想个办法试一试!

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-7-25 00:10 | 显示全部楼层
本帖最后由 aoe1981 于 2014-7-25 00:15 编辑
香川群子 发表于 2014-7-24 23:55
【如果是 1234554321  2345115432  3451221543  4512332154  5123443215,程序该怎么改?】

你不许看我 ...

  以下附件是借鉴……呵呵,我在此申明,核心算法来自于香川,版权归香川所有,我重点做了工作表格式及报表输出……
   性别总分分班(香川方法二次优化共82行代码可打印版).rar (147.69 KB, 下载次数: 170)
  刚刚更新了提示信息。



评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-7-25 00:21 | 显示全部楼层
  其实,这一次的借鉴、修改,除了使用了香川的绝妙算法之外,所以能简化就是把按1.总分降序排序,序列填充名次;2.按“性别降序+总分降序”的联合排序工作提前在原始数据表中手动提前完成了,这样规范的、准备好的数据给代码的运行创造了良好的基础……这也说明,Excel各大功能还是要配合运用,可以用基本功能、函数解决的就用他们吧,把更适宜的留给VBA!

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 14:01 , Processed in 0.034120 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表