ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 困扰我三年未解决的难题,请大师高人指点

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-1-25 18:17 | 显示全部楼层

非得每班1个工作表吗?

把数据集中在1个工作表,本来很简单的!为何要这样自寻烦恼!

上榜生h.rar

13.58 KB, 下载次数: 25

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-25 18:36 | 显示全部楼层

回复 26楼 lhx120824 的帖子

合并表,多么关键的一剑,乍一看,似乎很容易,其实这是最重要的。这一步搞定,后面要做的就迎刃而解了。
非常感谢各位行家里手的参与与热心帮助,在此寄上深深的祝福。
发此帖,目的并不在于排表本身,因为用常规的方法就可完成;而在于探索Excel的功能、方法,在此过程中学习、收获,鉴借名家的奇思妙趣,因为我们都是Excel人。

TA的精华主题

TA的得分主题

发表于 2011-1-25 18:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 zez 于 2011-1-24 20:29 发表

没关系,我的条件可能还不如你。我今年65岁,只是中专毕业,在学校从来没有学过外语。

崇敬,我们这些后辈更需努力。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-25 18:53 | 显示全部楼层

回复 41楼 hhjjpp 的帖子

谢楼主费心。楼主有所不知,我的附件只不过是个简单的示例,实际工作中,几十个班,每年级十来门课,数据量是很大的,放在一块,虽然便于汇总,但是不便于各班的操作,比如打印各班成绩,另外此表只不过是成绩统计的一小块,整个统计项目,有很多方面,把它们做成一个模板,一劳永逸,每次考试,一输成绩,全部搞定。这才能彰显Excel的魅力。感谢楼主参与。

TA的精华主题

TA的得分主题

发表于 2011-1-25 19:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 10楼 swyrlbq 的帖子

我已经53岁
这个有啥,人家都有,50多岁,退休了,学习ACCESS数据库的呢

看了你的提问
个人的建议
1)你能否手工,把要求,一张张画个图,然后把数据补充上,就能通过EXCEL,自动的,帮你解决掉

TA的精华主题

TA的得分主题

发表于 2011-1-25 19:25 | 显示全部楼层

回复 44楼 swyrlbq 的帖子

原始数据集中是规范的数据结构,至于说要分班出表,另外用单独的格式表完全能满足你的需要,不要把原始数据当成日常表格来用,数据规模越大就越不要分割成若干个表格!
至于科目多可以增加一栏叫课程的栏目即可,总之问题总可以简单地解决,否则你得懂编程了,VBA和SQL不是常人或者说外人能懂的!而且就是业内人士,调试好1段程序也不是轻而易举的!

[ 本帖最后由 hhjjpp 于 2011-1-25 19:41 编辑 ]

上榜生h.rar

13.46 KB, 下载次数: 18

纠正一点差错

TA的精华主题

TA的得分主题

发表于 2011-1-25 20:01 | 显示全部楼层
1.   先复制粘贴各个工作表数据到最后一个工作表里,这一步可以用VBA来完成!
见传上的excel文件! 上榜生.rar (17.58 KB, 下载次数: 14)
2.   再创建数据透视表就很容易了!可以用代码创建,这就不写代码了!
Option Explicit
Sub yj()
    Dim sht As Worksheet
    Dim i&, Num&

    Application.ScreenUpdating = False
    Sheet5.Range("A3:E65536").Clear
    For Each sht In Sheets
        If sht.CodeName <> "Sheet5" Then
            With sht
                i = .[a65536].End(xlUp).Row
                Num = Sheet5.[a65536].End(xlUp).Row
                .Range(.Cells(3, 1), .Cells(i, 5)).Copy Sheet5.Cells(Num + 1, 1)
               
            End With
            
        End If
    Next
    Num = Sheet5.[a65536].End(xlUp).Row
    Sheet5.Range(Sheet5.Cells(3, 1), Sheet5.Cells(Num, 5)).Borders().LineStyle = xlContinuous
    Application.ScreenUpdating = True
End Sub

TA的精华主题

TA的得分主题

发表于 2011-1-25 22:51 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-1-25 23:00 | 显示全部楼层
原帖由 zez 于 2011-1-24 20:29 发表

没关系,我的条件可能还不如你。我今年65岁,只是中专毕业,在学校从来没有学过外语。

不大,6,5就11岁嘛!

点评

黄兄点评精彩!  发表于 2012-2-19 22:23

TA的精华主题

TA的得分主题

发表于 2011-1-25 23:17 | 显示全部楼层
我觉得没必要写SQL语句什么的啊,
第一步,先用数据菜单下的“合并计算”命令,把四个班级的数据合并到一张工作表内。这步要注意四个表头内容要一样,比如附件里的第一列有编号有学号,要统一成同样的内容,比如“学号”。
第二步,用VLOOKUP函数把姓名引用过来,需要重复操作,但总比写程序语句要简单吧。当然,如果根本不需要姓名就更好了,直接删除姓名列就可以了。如果长期需要使用的话,建议建一个所有学生编号和姓名的文件备用,那么这步就只写一次公式就可以。
第三步,计算15%的个数,应该是33名。
第四步,用rank函数排序,排序后按名次降序排列,因为rank是美式排序法,也就是说假如有两个第一,那么接下来的名次就是第三名,这里刚好有两个32名,那么就取前32名就好。
以上写得较为繁琐,真正操作起来也就两三分钟就能完成,比VBA和SQL都简单,呵呵,主要是我只会这种方法~~

上榜生.rar

15.58 KB, 下载次数: 16

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

本版积分规则

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

GMT+8, 2024-6-26 19:47 , Processed in 0.043071 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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