ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2014-7-26 16:33 | 显示全部楼层
本帖最后由 香川群子 于 2014-7-26 16:40 编辑
香川群子 发表于 2014-7-25 10:12
我能研究出这样的算法,是因为有函数的功底。

…………

If (t \ k) Mod 2 Then c = (t \ (k * 2) + k - 1 - t Mod k) Mod k + 1 Else c = (t + t \ (k * 2)) Mod k + 1

上述代码实质上来源于工作表函数:
  1. =MOD(IF(MOD(INT(A1/5),2),5-1-A1,A1)+INT(A1/5/2),5)
复制代码
然后变化为:
  1. =IF(MOD(INT(A1/5),2),MOD(INT(A1/5/2)+5-1-A1,5),MOD(A1+INT(A1/5/2),5))
复制代码
一个函数解决计算问题。

…………
因此,这是先有了正确的工作表函数,然后把此函数运用到VBA之中去……
这样的思路和直接利用VBA方法特点做,是不同的。

一般说,工作表函数方法,用代码实现不是那么困难,基本上都能做到。
但是,按我后面写的VBA方法,则其思路无法逆向翻译为工作表函数方法。

这就是两者的差别。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-7-26 17:25 | 显示全部楼层
本帖最后由 aoe1981 于 2014-7-26 17:27 编辑
香川群子 发表于 2014-7-25 18:52
索性写成函数过程以便任意调用。

  关于新的分班方法:1234554321、2345115432……香川给出了两种方法:
  1.函数思路:
  见213楼:http://club.excelhome.net/forum. ... 1133631&pid=7769500
  2.VBA自定义函数思路:
  见224楼:http://club.excelhome.net/forum. ... 1133631&pid=7770975


  现在想说两点:
  1.上述两种方法,1的代码简短,在数据量(学生数、班级数)较小时运行速度快;2的代码较长,在数据量(学生数、班级数)大时运行速度快。
  我测得的部分数据:
  2380名学生分30班:方法1用时4.1172,方法2用时3.9336
  2380名学生分20班:方法1用时2.8633,方法2用时3.0820
  个人喜欢方法1,但是方法2更专业,以下附件便于大家测试:
   性别总分分班(香川自定义函数版及1234554321分班).rar (148.78 KB, 下载次数: 97)
  其中下图中两组代码互相注释测试:
   2.jpg
  目前为方法1,注释掉上面4行,取消下面1行注释,则为方法2.

  关于两种分班方法,哪种好一些,其中一个指标就是看谁分得的结果更均匀,也就是成绩的均衡性,这个要用各班平均分之间的标准差来衡量。
  方法1:12345、23451……
  方法2:1234554321、2345115432……
  我测试的数据表现为互有长短……当然,我反复复制粘贴得来的数据代表性并不好,不是真实情况,这个结论还有待于进一步根据真实数据测试、对比……
   1.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-7-26 17:36 | 显示全部楼层
香川群子 发表于 2014-7-26 16:33
If (t \ k) Mod 2 Then c = (t \ (k * 2) + k - 1 - t Mod k) Mod k + 1 Else c = (t + t \ (k * 2)) Mod ...

看来VBA比函数强大,或是说更为灵活、自由……

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-7-26 22:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
好好学习,天天向上

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-7-27 12:13 | 显示全部楼层
香川群子 发表于 2014-7-26 16:33
If (t \ k) Mod 2 Then c = (t \ (k * 2) + k - 1 - t Mod k) Mod k + 1 Else c = (t + t \ (k * 2)) Mod ...

本分班已很好了,还需进一步完善2个内容(注意,请不要改变现有表格格式)
问题:1、报名信息表多了分班S列,最好清楚。
问题:2、很多时候需要“照顾对象”分班,想在“报名信息表”R列中手动输入分配班级后的人员,不再参加分班,但要纳入分配统计和分班表生成。不参加分班的照顾人员分班最好能替代分配名次,以便均衡分班。不知能否办到,多谢关照!

7、▲▲▲ 七年级分班( 香川群子 班在后)vv.rar

74.46 KB, 下载次数: 30

TA的精华主题

TA的得分主题

发表于 2014-7-27 21:17 | 显示全部楼层
达州张先生 发表于 2014-7-27 12:13
本分班已很好了,还需进一步完善2个内容(注意,请不要改变现有表格格式)
问题:1、报名信息表多了分班 ...

  重名学生不分在同一班,这个感觉也有点像“陷阱”,或是说有一定的手动特性……
  我不管实际中的可能性,如果要写代码,必须考虑情况的极端性,从而确保逻辑上的可靠性……
  举例说明,假设共分5班,碰巧有6个重名,则根据抽屉原理,至少有两个重名学生分在一班……呵呵,这时候,重名同班是躲不过的……
  这就说明,重名学生不同班具有“手动”性质,可先来一个定位,事先手动分班,类似“择班”问题解决……
  不要觉得这些讨论自说自话,没有作用,其实,我已经把“重名”与“择班”问题合并成了一个问题,就是“择班”,处理了这个,两者都解决了……

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-7-27 21:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
aoe1981 发表于 2014-7-27 21:17
  重名学生不分在同一班,这个感觉也有点像“陷阱”,或是说有一定的手动特性……
  我不管实际中的 ...

少数问题手动解决就行了,照顾人情关系是普遍现象,也躲不过,254楼这个问题能否解决?估计有点难办!

TA的精华主题

TA的得分主题

发表于 2014-7-27 21:30 | 显示全部楼层
达州张先生 发表于 2014-7-27 21:23
少数问题手动解决就行了,照顾人情关系是普遍现象,也躲不过,254楼这个问题能否解决?估计有点难办!

得从长计议,慢慢啃这块骨头……

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-7-27 22:09 | 显示全部楼层
aoe1981 发表于 2014-7-27 21:30
得从长计议,慢慢啃这块骨头……

为了解决问题2:建议:先按总分、性别排序进行预分班,将预分班班级记录在R列中。再“报名信息表”S列设置一列分班调节列,采取人工处理调节分班,对需要照顾的一些特殊人员在此调节列中进行人工处理。然后用分班按钮,按调节分班(S列)后的定案报名信息表,拆分出各班分班名册,并重新计算分班情况统计表。请见附件!谢谢!

7、▲▲▲ 七年级分班( 香川群子 班在后)vv.rar

97.7 KB, 下载次数: 35

TA的精华主题

TA的得分主题

发表于 2014-7-27 22:25 | 显示全部楼层
aoe1981 发表于 2014-7-27 21:17
  重名学生不分在同一班,这个感觉也有点像“陷阱”,或是说有一定的手动特性……
  我不管实际中的 ...

同名(音)问题可这样处理:
将姓名转拼音,留重复,去单一。
将处理后的做一个分班条件即可。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 13:49 , Processed in 0.039256 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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