ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

想用excel制作一个考试系统,现在不知道怎样形成成绩汇总表!!急!!求大师指教!!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-7-24 21:20 | 显示全部楼层 |阅读模式
我想用excel 制作一个简易的考试系统,现在遇到了一个问题。
根据从不同部门人员收回的考试答卷,在答卷上自动计算出每个人的总成绩(都显示在K45单元格)
现在需要从每张答卷的总成绩提取出来,汇总在另一张新表(成绩统计表)中。
在网上查了很久,都没法解决!
请问哪位大师能帮我写个宏代码出来?非常非常感谢啊。
这是老板交给我的任务,求帮忙啊!!!!



批量提取总分.rar

28.37 KB, 下载次数: 55

TA的精华主题

TA的得分主题

发表于 2014-7-24 22:06 | 显示全部楼层
我改了一下以前的程序,程序比较乱,符合你的要求了。你看看。。
  1. Sub 汇总()
  2.     Dim Arr(1 To 1000, 1 To 2), i%, j%, drow%, Erow%, eerow%
  3.     Dim filename As String, wb As Workbook, sht As Worksheet, shtname As String
  4.     Dim fn As String, d, k, str As String
  5.    ' Set d = CreateObject("Scripting.Dictionary")
  6.     '关闭屏幕闪烁和警告框
  7.     Application.ScreenUpdating = False
  8.     Application.DisplayAlerts = False
  9.     'On Error GoTo VeryEnd
  10.    ' ThisWorkbook.Worksheets("sheet1").Range("a2:y550000").ClearContents    '清除汇总表中原来的数据
  11.     i = 1
  12.     filename = Dir(ThisWorkbook.Path & "\*.xls")
  13.     Do While filename <> ""
  14.         If filename <> ThisWorkbook.Name Then             '判断文件是否是本工作簿
  15.             fn = ThisWorkbook.Path & "" & filename
  16.             Set wb = GetObject(fn)                            '将fn代表的工作簿对象赋给变量
  17.             Set sht = wb.Sheets(1)
  18.            ' drow = sht.[a65536].End(3).Row
  19.             '  MsgBox drow
  20.          Arr(i, 1) = sht.Name
  21.            Arr(i, 2) = sht.[k45].Value
  22.            i = i + 1
  23.             wb.Close False
  24.         End If
  25.         filename = Dir
  26.     Loop
  27. VeryEnd:
  28.     ThisWorkbook.Worksheets("sheet1").Range("a2").Resize(UBound(Arr, 1), 2) = Arr
  29.     MsgBox "汇总完成,请查看"
  30.     Application.ScreenUpdating = True
  31.     Application.DisplayAlerts = True
  32. End Sub
复制代码

学生答卷.zip

39.61 KB, 下载次数: 83

TA的精华主题

TA的得分主题

发表于 2014-7-24 22:07 | 显示全部楼层
忘了提醒一句,总分需要固定在 k45
否则会汇总出错。
建议以后吧模拟你数据也发上来。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-7-24 23:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
恩恩,很符合要求了。
但我还想问一下,就是说总分只能记录在K45是吗?那如果要更改单元格呢,要改哪个语句呢?
基本没接触VBA,菜鸟级别求指教!
非常感谢!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-7-25 10:41 | 显示全部楼层
TomingTang 发表于 2014-7-24 22:07
忘了提醒一句,总分需要固定在 k45
否则会汇总出错。
建议以后吧模拟你数据也发上来。

恩恩,很符合要求了。
但我还想问一下,就是说总分只能记录在K45是吗?那如果要更改单元格呢,要改哪个语句呢?
基本没接触VBA,菜鸟级别求指教!
非常感谢!!!

TA的精华主题

TA的得分主题

发表于 2014-7-25 11:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
是的,只能 汇总 k45的,具体需要修改 21行代码,“Arr(i, 1) = sht.Name
           Arr(i, 2) = sht.[k45].Value”,具体修改还要看你的表的构造。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-7-25 14:17 | 显示全部楼层
TomingTang 发表于 2014-7-25 11:59
是的,只能 汇总 k45的,具体需要修改 21行代码,“Arr(i, 1) = sht.Name
           Arr(i, 2) = sht.[k4 ...

恩恩  我明白了!非常感谢!!

TA的精华主题

TA的得分主题

发表于 2014-7-25 15:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学习一下看看

TA的精华主题

TA的得分主题

发表于 2014-8-11 23:41 | 显示全部楼层
进来这个论坛就是好,可以学到好多东东
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-24 07:03 , Processed in 0.049726 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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