设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2557|回复: 4
打印 上一主题 下一主题

[VBA编程/宏] 用Excel制作学生成绩条

[复制链接]
跳转到指定楼层
1#
发表于 2004-7-21 21:53:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
用Excel制作学生成绩条

      现在很多学校都在使用Excel来处理学生成绩,但是处理完成绩之后,怎样才能将每个学生的成绩以成绩条方式发给学生呢?这可是个头痛的问题,因为处理完成绩之后会发现,成绩表只有一个表头(如:班别、年级、编号、姓名、总分、名次等),如何才能使每一个学生的成绩记录都有一个表头呢?

  有的同事这样想:首先在每个学生的成绩记录之前插入一个空白行,然后再将表头复制到空白行上不就可以了吗?刚开始时觉得还是有点道理的,可是后来想了一想,我们学校有2000多学生,如果用这种方法给每位学生的成绩记录制一个表头,那得用多少时间?

  如果能自动完成这个过程,那可是最好的,于是我想到了用Excel的VBA来制作学生成绩条。



  解决问题的思路



  因为每个学生只有一个学号,所以学号是惟一的,根据学号惟一性这一特点,使用VBA里的判断语句,如果学号不同,就在两者之间插入一个空白行,然后再在每个空白行粘贴复制的表头,最后使用循环语句,自动制作每个学生成绩记录的表头。



  解决问题的方法



  打开学生的成绩表,我们需要另存为另外一个表来制作成绩条,以免影响成绩表的原貌。

  在VBA的工程资源管理器中双击Sheet1,然后出现代码窗口,在代码窗口输入如下代码:

  Sub cjt()

   Application.ScreenUpdating = False

   Sheets(1).[A1].CurrentRegion.Copy Sheets(2).[A1]

  ’将表一的成绩表复制到表二

   a=(Application.WorksheetFunction.CountA(Sheets(2).[b2:b2000]))*2

  ’sheets(1).[b2:b2000]的字符数的2倍

   Sheets(2).[A1:R1].Borders(xlEdgeTop).LineStyle = xlDouble

   ’sheets(2).[a1:r1]的下边框是双线

   For i = 2 To a

   If Sheets(2).Cells(i, 3) <> Sheets(2).Cells(i + 1, 3) And (Sheets(2).Cells(i, 3) <> "") Then

   Sheets(2).Rows(i + 1).Insert

   End If

   ’如果第三列的上下单元格的值不相等,则在它们之间插入一个空白行

   If Sheets(2).Cells(i, 3) = "" Then

   Sheets(2).[A1:R1].Copy Sheets(2).Cells(i, 1)

   End If

   ’如果第三列中的单元格是空的,则将Sheets(2).[A1:R1]复制到此行

   Next

   Application.ScreenUpdating = True

  End Sub





作者:不详
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
5#
发表于 2009-4-4 20:14:59 | 只看该作者
真真学习
4#
发表于 2009-3-26 21:37:52 | 只看该作者
使用邮件合并会比编程要快
3#
发表于 2009-3-26 18:57:04 | 只看该作者
谢谢分享!!
2#
发表于 2008-1-23 10:20:16 | 只看该作者
Excel的确是一个好用的东西
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-26 03:28 , Processed in 0.081893 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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