ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA考试安排8778座次表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-12-23 19:33 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
此表中的座次表不能按照预设的考场人数生成,请各位高手帮助解决里面的两个问题,谢谢!
VBA考试安排8778.zip (359.19 KB, 下载次数: 69)

TA的精华主题

TA的得分主题

发表于 2014-12-23 20:45 | 显示全部楼层
看了看附件中的代码,该代码在设计之初就没考虑按每个试场人数安排考生,而是统一按每个考场30人安排的,现在修改起来比较麻烦。

TA的精华主题

TA的得分主题

发表于 2014-12-23 21:10 | 显示全部楼层
这来自EP,哈哈
没看明白是哪里没对?生成的考场、座号、分班都是对的呀。

TA的精华主题

TA的得分主题

发表于 2014-12-23 21:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
代码没有问题啊

TA的精华主题

TA的得分主题

发表于 2014-12-23 22:00 | 显示全部楼层
原来你是讲生成座次表的问题??

TA的精华主题

TA的得分主题

发表于 2014-12-24 00:54 | 显示全部楼层
本帖最后由 feiren228 于 2014-12-24 13:23 编辑

测试》》》》
VBA考试安排_feiren228.zip (384.04 KB, 下载次数: 54) VBA考试安排_feiren228_V3.rar (248.28 KB, 下载次数: 71)

TA的精华主题

TA的得分主题

发表于 2014-12-24 00:57 | 显示全部楼层
本帖最后由 feiren228 于 2014-12-24 13:16 编辑
  1. Sub 生成座次表() 'by feiren228
  2.     Application.DisplayAlerts = False '不提示
  3.     Application.ScreenUpdating = False '不刷新
  4.     With Sheets("考生信息")
  5.         Row1 = .Range("a" & .Rows.Count).End(xlUp).Row '考生信息的最后一行行号
  6.         ks = .Range("a2:e" & Row1) '考生信息赋予数组
  7.     End With
  8.     With Sheets("考场信息") '同上考场信息赋予数组
  9.         Row2 = .Range("a" & .Rows.Count).End(xlUp).Row
  10.         kc = .Range("a2:c" & Row2)
  11.     End With
  12.     For Each sht In Sheets '扫描每一个工作表
  13.         If sht.Name Like "试场*" Then '是考场工作表就删除
  14.         sht.Delete
  15.     End If
  16. Next
  17. For n = 1 To UBound(kc)
  18.     k = Int(kc(n, 2) / 4)
  19.     k0 = kc(n, 2) Mod 4
  20.     ps = Array(k, k, k, k)
  21.     For x = 0 To k0 - 1
  22.         ps(x) = ps(x) + 1
  23.     Next
  24.     c0 = ps(0): c1 = ps(1): c2 = ps(2): c3 = ps(3)
  25.     ReDim tempar(1 To ps(0), 1 To 12)
  26.     For i = 1 To UBound(ks)
  27.         If ks(i, 3) = kc(n, 1) Then
  28.             m = m + 1
  29.             Select Case m
  30.             Case Is <= c0
  31.                 tempar(m, 1) = (ks(i, 1))
  32.                 tempar(m, 2) = (ks(i, 2))
  33.                 tempar(m, 3) = (ks(i, 4))
  34.             Case Is <= c0 + c1
  35.                 tempar(ps(1), 4) = (ks(i, 1))
  36.                 tempar(ps(1), 5) = (ks(i, 2))
  37.                 tempar(ps(1), 6) = (ks(i, 4))
  38.                 ps(1) = ps(1) - 1
  39.             Case Is <= c0 + c1 + c2
  40.                 y = y + 1
  41.                 tempar(y, 7) = (ks(i, 1))
  42.                 tempar(y, 8) = (ks(i, 2))
  43.                 tempar(y, 9) = (ks(i, 4))
  44.             Case Is <= c0 + c1 + c2 + c3
  45.                 tempar(ps(3), 10) = (ks(i, 1))
  46.                 tempar(ps(3), 11) = (ks(i, 2))
  47.                 tempar(ps(3), 12) = (ks(i, 4))
  48.                 ps(3) = ps(3) - 1
  49.             End Select
  50.         End If
  51.     Next i
  52.     Sheets("座次表").Copy after:=Sheets(Sheets.Count) '复制“座次表”到最后
  53.     With Sheets(Sheets.Count) '针对最后一个工作表
  54.         .Name = "试场" & n '更名
  55.         .Range("A5").Resize(UBound(tempar), 12) = tempar
  56.         Erase tempar
  57.         '.Range("D5:F" & ps(1) + 4).Sort key1:=[F4], Order1:=xlDescending
  58.        ' .Range("J5:L" & ps(3) + 4).Sort key1:=[L4], Order1:=xlDescending
  59.        ' .Range("G5:I" & ps(2) + 4).Sort key1:=[I4], Order1:=xlAscending
  60.         .[F1] = n
  61.         .[c2] = kc(n, 3)
  62.         .[I2] = [A5] & "至" & [J5]
  63.     End With
  64.     m = 0: y = 0
  65. Next n
  66. Application.DisplayAlerts = True '恢复提示
  67. Application.ScreenUpdating = True '恢复刷屏
  68. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2014-12-24 13:19 | 显示全部楼层
feiren228 发表于 2014-12-24 00:57

feiren228老师:生成考场号和座号有问题,不能按考场信息设置的人数去排考场号和座号,请指教,多谢

TA的精华主题

TA的得分主题

发表于 2014-12-24 13:28 | 显示全部楼层
dyzx 发表于 2014-12-24 13:19
feiren228老师:生成考场号和座号有问题,不能按考场信息设置的人数去排考场号和座号,请指教,多谢

没有问题!按步骤来,【考号】表先清除考号,重新生成考号,再到【考生信息】里依次操作执行,即可

TA的精华主题

TA的得分主题

发表于 2014-12-24 13:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 dyzx 于 2014-12-24 13:42 编辑
feiren228 发表于 2014-12-24 13:28
没有问题!按步骤来,【考号】表先清除考号,重新生成考号,再到【考生信息】里依次操作执行,即可

feiren228老师:一点生成考场座号键就出现对话框“下标越有-界”,同时这句显示黄色brr(s, 1) = arr(m, 1)请指教,多谢

VBA考试安排_feiren228_V3.rar

241.85 KB, 下载次数: 21

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

本版积分规则

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

GMT+8, 2024-11-16 10:42 , Processed in 0.045389 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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