Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1802|回复: 7

[已解决]如何求号段(有附件了)

[复制链接]
发表于 2013-4-21 12:34 | 显示全部楼层 |阅读模式
各位大侠:
       我是一名高中老师,经常组织年级的期中期末考试,安排考场,附件中的表就是期中考试考场设置表,我想再弄一份各考场号段表,用于布置考场,如何求得各考场考号的起止号码(号段)
肯定大家帮忙!
最佳答案
2013-4-21 22:23
本帖最后由 爱疯 于 2013-4-21 22:24 编辑

Sub Click()
    Dim A, B, d, i%, s%
    A = Range("a1").CurrentRegion
    ReDim B(1 To UBound(A), 1 To 3)
    Set d = CreateObject("scripting.dictionary")
    s = s + 1
    For i = 2 To UBound(A)
        If d.exists(A(i, 4)) = False Then s = s + 1: d(A(i, 4)) = s
        
        B(s, 1) = A(i, 4)
        
        If B(s, 2) = 0 Then B(s, 2) = A(i, 1)
        If B(s, 2) > A(i, 1) Then B(s, 2) = A(i, 1)
        
        If B(s, 3) = 0 Then B(s, 2) = A(i, 1)
        If B(s, 3) < A(i, 1) Then B(s, 3) = A(i, 1)
    Next i
    B(1, 1) = "考场": B(1, 2) = "开始号": B(1, 3) = "结束号"
    [G1].Resize(s, 3) = B
End Sub
第二学期期中考试3.rar (30.51 KB, 下载次数: 14)

第二学期期中考试.rar

22.21 KB, 下载次数: 6

考试附件

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-4-21 12:44 | 显示全部楼层
回复

使用道具 举报

发表于 2013-4-21 13:02 | 显示全部楼层
  1. Sub Click()
  2.     Dim A, B, d, i%, s%
  3.     A = Range("a1").CurrentRegion
  4.     ReDim B(1 To UBound(A), 1 To 3)
  5.     Set d = CreateObject("scripting.dictionary")

  6.     For i = 2 To UBound(A)
  7.         If d.exists(A(i, 4)) = False Then s = s + 1: d(A(i, 4)) = s
  8.         
  9.         B(s, 1) = A(i, 4)
  10.         
  11.         If B(s, 2) = 0 Then B(s, 2) = A(i, 1)
  12.         If B(s, 2) > A(i, 1) Then B(s, 2) = A(i, 1)
  13.         
  14.         If B(s, 3) = 0 Then B(s, 2) = A(i, 1)
  15.         If B(s, 3) < A(i, 1) Then B(s, 3) = A(i, 1)
  16.     Next i
  17.     B(1, 1) = "考场": B(1, 2) = "开始号": B(1, 3) = "结束号"
  18.     [G1].Resize(s, 3) = B
  19. End Sub
复制代码
第二学期期中考试2.rar (30.25 KB, 下载次数: 9)
回复

使用道具 举报

发表于 2013-4-21 17:19 | 显示全部楼层
爱疯 发表于 2013-4-21 13:02

怎么只能从第266行开始?前面265人就没有考场和起止号
回复

使用道具 举报

 楼主| 发表于 2013-4-21 17:59 | 显示全部楼层
爱疯 发表于 2013-4-21 13:02

老师,太棒了,帮我解决了大问题,我还有个小问题,就是在“科技五楼”这个考场的号段怎么没有(应该是1-265)
回复

使用道具 举报

发表于 2013-4-21 20:19 | 显示全部楼层
如果在D2中没有任何数据的时候就可以从D3考场开始了
回复

使用道具 举报

发表于 2013-4-21 22:23 | 显示全部楼层    本楼为最佳答案   
本帖最后由 爱疯 于 2013-4-21 22:24 编辑

Sub Click()
    Dim A, B, d, i%, s%
    A = Range("a1").CurrentRegion
    ReDim B(1 To UBound(A), 1 To 3)
    Set d = CreateObject("scripting.dictionary")
    s = s + 1
    For i = 2 To UBound(A)
        If d.exists(A(i, 4)) = False Then s = s + 1: d(A(i, 4)) = s
        
        B(s, 1) = A(i, 4)
        
        If B(s, 2) = 0 Then B(s, 2) = A(i, 1)
        If B(s, 2) > A(i, 1) Then B(s, 2) = A(i, 1)
        
        If B(s, 3) = 0 Then B(s, 2) = A(i, 1)
        If B(s, 3) < A(i, 1) Then B(s, 3) = A(i, 1)
    Next i
    B(1, 1) = "考场": B(1, 2) = "开始号": B(1, 3) = "结束号"
    [G1].Resize(s, 3) = B
End Sub
第二学期期中考试3.rar (30.51 KB, 下载次数: 14)
回复

使用道具 举报

 楼主| 发表于 2013-4-23 06:56 | 显示全部楼层
谢谢爱疯老师,真的十分感谢!
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 18:59 , Processed in 0.331290 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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