设为首页收藏本站

 找回密码
 立即注册

只需一步,快速开始

搜索
查看: 184|回复: 18

学生考场安排模板

  [复制链接]
累计签到:19 天
连续签到:14 天
灌水成绩
3
163
2954
主题
帖子
积分

等级头衔

ID : 881

初级技术员

积分成就 测量币 : 2954
在线时间 : 0 小时
注册时间 : 2026-2-10
最后登录 : 2026-5-23

勋章
UID勋章测量学徒测量员
发表于 2026-4-18 12:01:42 | 显示全部楼层 |阅读模式 IP:北京
功能:

1、可以先预设某几个学生的考场位置
2、随机打散学生
3、可以生成考场安排表,班级安排表和考场桌贴
4、可以自由设定每个考场的安排人数
5、会自动在文件同一个路径下生成一个文件夹,考场安排表,班级安排表和考场桌贴都在这个文件夹内
考场安排有预设.rar
累计签到:21 天
连续签到:1 天
灌水成绩
2
155
2462
主题
帖子
积分

等级头衔

ID : 806

初级技术员

积分成就 测量币 : 2462
在线时间 : 0 小时
注册时间 : 2025-10-6
最后登录 : 2026-5-15

勋章
UID勋章测量学徒测量员
发表于 2026-4-18 12:14:56 | 显示全部楼层 IP:北京
Sub 考场安排()
Application.ScreenUpdating = False
Dim ar As Variant, br As Variant, arr As Variant
Dim i As Long, r As Long, rs As Long
Dim d As Object, dc As Object
Set d = CreateObject("scripting.dictionary")
Set dc = CreateObject("scripting.dictionary")
tt = Timer
With Sheets("设置")
    r = .Cells(Rows.Count, 4).End(xlUp).Row
    If r < 2 Then MsgBox &quot;请先设置考场号和考场人数!&quot;: End
    ar = .Range(&quot;d1&quot;).Resize(r, 2)
    mc = .[b1] & .[b2] & &quot;学年度&quot; & .[b3] & .[b4] & &quot;考场安排表&quot;
End With
With Sheets(&quot;考生数据&quot;)
    rs = .Cells(Rows.Count, 1).End(xlUp).Row
    If rs < 2 Then MsgBox &quot;考生数据为空!&quot;: End
    arr = .Range(&quot;a1&quot;).Resize(rs, 5)
End With
With Sheets(&quot;考场安排&quot;)
    With .UsedRange.Offset(1)
        .Value = Empty
        .Borders.LineStyle = 0
    End With
    With .[a2].Resize(UBound(arr), UBound(arr, 2))
        .Value = arr
    End With
    .[a2].Resize(UBound(arr), UBound(arr, 2) + 3).Borders.LineStyle = 1
    .[f2].Resize(1, 3) = Array(&quot;考号&quot;, &quot;考场号&quot;, &quot;座位号&quot;)
    br = .Range(&quot;a3&quot;).Resize(rs - 1, 8)
    '使用Fisher-Yates洗牌算法随机打散
    Randomize ' 初始化随机数生成器
    For i = UBound(br) To 2 Step -1
        s = Int((i - 1) * Rnd) + 1 '生成1到i-1的随机数
        '交换行数据
        For j = 1 To UBound(br, 2) '
            temp = br(i, j)
            br(i, j) = br(s, j)
            br(s, j) = temp
        Next j
    Next i
    .[a1] = mc
    nn = 0: dc.RemoveAll
    For i = 2 To UBound(br)
        If Not d.exists(br(i, 4)) Then
            nn = nn + 1
            d(br(i, 4)) = nn
        End If
    Next i
    For i = 2 To UBound(br)
        br(i, 6) = d(br(i, 4))
        d(br(i, 4)) = d(br(i, 4)) + d.Count
    Next i
    For i = 2 To UBound(br)
        For s = i + 1 To UBound(br)
            If br(i, 6) > br(s, 6) Then
                For j = 1 To UBound(br, 2)
                    kk = br(i, j)
                    br(i, j) = br(s, j)
                     br(s, j) = kk
                Next j
            End If
        Next s
        If br(i, 5)  &quot;&quot; Then dc(br(i, 5)) = i
    Next i
    m = 2
    For i = 2 To UBound(ar)
        If ar(i, 1)  &quot;&quot; Then
            s = 0
            m = m - 1
            For w = 1 To ar(i, 2) + 10
                m = m + 1
                If m > UBound(br) Then GoTo 20
                If br(m, 5) = &quot;&quot; Then
                    s = s + 1
                    zf = Format(ar(i, 1), &quot;00&quot;) & Format(s, &quot;00&quot;)
                    If dc.exists(zf) Then
                        s = s + 1
                    Else
                        s = s
                    End If
                    If s > ar(i, 2) Then GoTo 10
                    br(m, 7) = Format(ar(i, 1), &quot;00&quot;)
                    br(m, 8) = Format(s, &quot;00&quot;)
                    br(m, 6) = br(m, 7) & br(m, 8)
                Else
                    br(m, 6) = br(m, 5)
                    br(m, 7) = Left(br(m, 5), 2)
                    br(m, 8) = Right(br(m, 5), 2)
                End If
            Next w
10:
        End If
    Next i
20:
    .Columns(&quot;A:H&quot;).NumberFormatLocal = &quot;@&quot;
    .Range(&quot;a3&quot;).Resize(rs - 1, 8) = br
    .Range(&quot;a2&quot;).Resize(rs, 8).Sort .[f2], 1, , , , , , 1 '按考号排序
    .Columns(5).Delete
    .Columns(&quot;F:G&quot;).HorizontalAlignment = xlHAlignCenter
    .Activate
End With
Set d = Nothing
Set dc = Nothing
Application.ScreenUpdating = True
MsgBox &quot;耗时:&quot; & Format(Timer - tt, &quot;0.00&quot;) & &quot;秒!&quot;
End Sub
回复

使用道具 举报

累计签到:18 天
连续签到:3 天
灌水成绩
3
182
2254
主题
帖子
积分

等级头衔

ID : 897

初级技术员

积分成就 测量币 : 2254
在线时间 : 0 小时
注册时间 : 2026-1-23
最后登录 : 2026-5-20

勋章
UID勋章测量学徒测量员
发表于 2026-4-18 12:34:04 | 显示全部楼层 IP:北京
感谢大佬分享
回复

使用道具 举报

累计签到:20 天
连续签到:11 天
灌水成绩
4
170
2122
主题
帖子
积分

等级头衔

ID : 839

初级技术员

积分成就 测量币 : 2122
在线时间 : 0 小时
注册时间 : 2025-10-3
最后登录 : 2026-5-14

勋章
UID勋章测量学徒测量员
发表于 2026-4-18 12:39:42 | 显示全部楼层 IP:北京
感谢老师的分享
回复

使用道具 举报

累计签到:13 天
连续签到:1 天
灌水成绩
1
169
2432
主题
帖子
积分

等级头衔

ID : 863

初级技术员

积分成就 测量币 : 2432
在线时间 : 0 小时
注册时间 : 2025-11-12
最后登录 : 2026-5-23

勋章
UID勋章测量学徒测量员
发表于 2026-4-18 12:56:22 | 显示全部楼层 IP:北京
谢谢分享!
回复

使用道具 举报

累计签到:16 天
连续签到:2 天
灌水成绩
4
160
2503
主题
帖子
积分

等级头衔

ID : 856

初级技术员

积分成就 测量币 : 2503
在线时间 : 0 小时
注册时间 : 2026-1-15
最后登录 : 2026-5-20

勋章
UID勋章测量学徒测量员
发表于 2026-4-18 13:04:29 | 显示全部楼层 IP:北京
老大,我在你发的考场安排的基础上删除了学号,也改了考号的形式,座位贴也改了符合我校的考场安排习惯,请帮我改下对应的VBA,谢谢啦!考场安排有预设.rar
回复

使用道具 举报

累计签到:22 天
连续签到:3 天
灌水成绩
2
174
2468
主题
帖子
积分

等级头衔

ID : 855

初级技术员

积分成就 测量币 : 2468
在线时间 : 0 小时
注册时间 : 2025-9-3
最后登录 : 2026-5-23

勋章
UID勋章测量学徒测量员
发表于 2026-4-18 13:20:47 | 显示全部楼层 IP:北京
代码还有点问题,不能根据设置的人数进行分考场,比如242人共分6个考场,每考场40人,最后一个考场应为42人。但又从第7考场开始了,超出了设置的6个考场。请教!!
回复

使用道具 举报

累计签到:16 天
连续签到:1 天
灌水成绩
3
171
1876
主题
帖子
积分

等级头衔

ID : 900

测量学徒

积分成就 测量币 : 1876
在线时间 : 0 小时
注册时间 : 2026-1-12
最后登录 : 2026-5-18

勋章
UID勋章测量学徒测量员
发表于 2026-4-18 13:27:01 | 显示全部楼层 IP:北京
你这个问题问的有点那个.....
242人,每考场40人,必须有7个呀..
要么设置考场数,要么设置每场人数,二选一.
回复

使用道具 举报

累计签到:19 天
连续签到:13 天
灌水成绩
2
151
2399
主题
帖子
积分

等级头衔

ID : 803

初级技术员

积分成就 测量币 : 2399
在线时间 : 0 小时
注册时间 : 2026-4-1
最后登录 : 2026-5-22

勋章
UID勋章测量学徒测量员
发表于 2026-4-18 13:38:06 | 显示全部楼层 IP:北京
要么你对教务工作还不是非常熟悉,要么你没有认真的熟悉功能,242人,分6个考场,每个考场40人,总数是420人,余数是2人,关键是你要在设置中设置各个考场人数呀,
回复

使用道具 举报

累计签到:12 天
连续签到:2 天
灌水成绩
2
147
2310
主题
帖子
积分

等级头衔

ID : 888

初级技术员

积分成就 测量币 : 2310
在线时间 : 0 小时
注册时间 : 2026-2-8
最后登录 : 2026-5-21

勋章
UID勋章测量学徒测量员
发表于 2026-4-18 13:49:27 | 显示全部楼层 IP:北京
你至少要明确告诉我,按你校的习惯,目前还存在的问题是什么。我才能有针对性的去修改代码的呀
回复

使用道具 举报

快速回复换一批
好贴支持!
感谢楼主,好人一生平安
好贴帮顶
马克一下
2333333333
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|精密测量技术论坛 ( 桂ICP备2026007449号-1 )|网站地图

GMT+8, 2026-5-23 11:05 , Processed in 0.273720 second(s), 41 queries .

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