ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: aoe1981

[原创] 超级强大2:性别与科目均衡分班

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-3 21:17 | 显示全部楼层
  修改的代码为“模块3后续调配”的第一个过程“Public Sub xutiao() '后续调配:完全匹配”中的几句代码:

  1.     For i = 2 To h '转换男为100,女为0
  2.         If jcsj(i, xbl) = "男" Then jcsj(i, xbl) = 100 Else jcsj(i, xbl) = 0
  3.     Next i
  4.     Erase xsbj: ReDim xsbj(2 To h, 1 To 4)
  5.     For i = 2 To h '动态写入未调配学生科目、性别参差信息
  6.         If jcsj(i, bjl) = "" Then
  7.             pingj = 分班信息.[j3].Resize(1, 4).Value
  8.             biaoj = 分班信息.[o4].Resize(n, 4).Value
  9.             If jcsj(i, ywl) < pingj(1, 1) Then xsbj(i, 1) = 0 Else xsbj(i, 1) = 1
  10.             If jcsj(i, sxl) < pingj(1, 2) Then xsbj(i, 2) = 0 Else xsbj(i, 2) = 1
  11.             If jcsj(i, zhl) < pingj(1, 3) Then xsbj(i, 3) = 0 Else xsbj(i, 3) = 1
  12.             If jcsj(i, xbl) < pingj(1, 4) Then xsbj(i, 4) = 0 Else xsbj(i, 4) = 1
  13. '            xsbj(i, 5) = xsbj(i, 1) & xsbj(i, 2) & xsbj(i, 3) & xsbj(i, 4)
  14.         End If
  15.     Next i
  16.     m = 0: m1 = 0
  17.     For i = 2 To h '寻找完全匹配学生
  18.         If jcsj(i, bjl) = "" Then
  19.             For j = 1 To n
  20.                 gs2 = (xsbj(i, 1) + biaoj(j, 1) = 1) + (xsbj(i, 2) + biaoj(j, 2) = 1) + (xsbj(i, 3) + biaoj(j, 3) = 1) + (xsbj(i, 4) + biaoj(j, 4) = 1)
  21. '                If xsbj(i, 5) = biaoj(j, 5) Then
  22.                 If -gs2 = 4 Then
  23.                     pph = i: ppb = j: hh(ppb) = hh(ppb) + 1: m = 1 '下句用于控制各班人数的均衡
  24.                     If hh(ppb) - WorksheetFunction.Min(hh) < 2 Then GoTo 100 Else hh(ppb) = hh(ppb) - 1: m = 0
  25.                 End If
  26.             Next j
  27.         End If
  28.     Next i
复制代码
  注释掉的是出错的代码……

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-3 21:24 | 显示全部楼层
  关于学生成绩状态判断的语句,原来是这样的,即使用了我所说的简便方法,结果我在后面搞反了的,现在标注下,太打击人了……
  1.             If jcsj(i, ywl) < pingj(1, 1) Then xsbj(i, 1) = 1 Else xsbj(i, 1) = 0
  2.             If jcsj(i, sxl) < pingj(1, 2) Then xsbj(i, 2) = 1 Else xsbj(i, 2) = 0
  3.             If jcsj(i, zhl) < pingj(1, 3) Then xsbj(i, 3) = 1 Else xsbj(i, 3) = 0
  4.             If jcsj(i, xbl) < pingj(1, 4) Then xsbj(i, 4) = 1 Else xsbj(i, 4) = 0
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-3 21:27 | 显示全部楼层
  可见,17楼的代码与工作表中
“<平均:标记0
≥平均:标记1”
  的情况刚好相反,现在我修正成一致的了……
  这下成功了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-3 21:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
张雄友 发表于 2014-8-3 15:02
http://club.excelhome.net/thread-1034379-6-2.html

是很强大的,但不想搞得太复杂,顶一下。

  我修正了一个要命的错误,终于成功了,请见19楼的附件:
  http://club.excelhome.net/forum. ... 756&pid=7786363

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-3 21:40 | 显示全部楼层
  不过,我的这种算法可能适应性不够好,如果科目是8科,加上性别是9个判断指标,这样会使代码变得很长很长……单从这一点,对法师下帖中的算法,更是充满好奇!
  http://club.excelhome.net/forum. ... 379&pid=7784852

TA的精华主题

TA的得分主题

发表于 2014-8-3 21:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
加一次精华就能得到50财富值,可是怎么 加精华呢?

TA的精华主题

TA的得分主题

发表于 2014-8-3 21:47 | 显示全部楼层
aoe1981 发表于 2014-8-3 21:40
  不过,我的这种算法可能适应性不够好,如果科目是8科,加上性别是9个判断指标,这样会使代码变得很长很 ...

你也是个天才,只是刚起步,好样的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-3 21:47 | 显示全部楼层
远在远方 发表于 2014-8-3 21:43
加一次精华就能得到50财富值,可是怎么 加精华呢?

  这个您得问版主,我也不知道……不过,财富值只要你每天都来泡论坛,每天都活跃、都抢红包,自然就累积多了……

TA的精华主题

TA的得分主题

发表于 2014-8-3 21:49 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-3 21:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
张雄友 发表于 2014-8-3 21:47
你也是个天才,只是刚起步,好样的。

  嘘,这样的说法,在EH里还是要不得的……这里有很多鄙人此生也达不到其高度的真正的“高手”、“天才”……
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-19 08:00 , Processed in 0.031821 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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