Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: dqmly2004

如何用Excell将学生的多次成绩汇总 8课成绩 加总成绩

[复制链接]
 楼主| 发表于 2019-5-6 15:55 | 显示全部楼层
toun 发表于 2019-5-6 15:03
可以用vlookup函数跟踪 然后再配合sumif

班级姓名
页1
语文
数学
英语
物理
化学
总成绩
级部名次
1李四
成绩2
113
132
98
80
79
成绩3
104
105
100
88
90
成绩4
104
105
100
88
90
班级姓名
页1
语文
数学
英语
物理
化学
总成绩
级部名次
2李四
成绩5
104
105
100
88
90
成绩1
12
21
214
93
78
成绩2
12
21
214
80
79
班级姓名
页1
语文
数学
英语
物理
化学
总成绩
级部名次
2琉璃
成绩3
12
21
214
88
90
成绩4
12
21
214
88
90
成绩5
12
21
214
88
90

成绩跟踪.zip

310.5 KB, 下载次数: 8

回复

使用道具 举报

发表于 2019-5-7 09:38 | 显示全部楼层
先给你看下运行效果(局部),这是最后的部分:
班级        姓名        成绩        语文        数学        英语        物理        道法        历史        地理        生物        总分        bc        jc
11        许浩然        成绩1        38        3        3        12        10        6        4        12        88        66        1045
11        许浩然        成绩2        5        12        18        6        18        16        22        20        117               
11        许浩然        成绩3        38        3        3        12        10        6        4        12        88        66        1045
11        许浩然        成绩4        20        0        17        12        24        16        18        12        119        1039        66
11        许浩然        成绩5        41        3        8        2        10        12        10        6        92               
班级        姓名        成绩        语文        数学        英语        物理        道法        历史        地理        生物        总分        bc        jc
9        颜宇        成绩1        0        0        0        0        0        0        0        0        0        64        1046
9        颜宇        成绩3        0        0        0        0        0        0        0        0        0        64        1046
                                                                                                       
                                                                                                       
                                                                                                       
班级        姓名        成绩        语文        数学        英语        物理        道法        历史        地理        生物        总分        bc        jc
16        於永敢        成绩1                                                                                       
                                                                                                       

1、首先我没做合并单元格,我不喜欢合并单元格,如果你需要你自己改;
2、你原数据有6个表,前5个是一样的格式,但最后一个不是,所以我也只统计了5个。格式不一样是没法统计的;
3、如果按照5个表来统计,每个人占5行。因为有少量的人并不是每次考试都有成绩,比如“颜宇”只有两次考试,分别是第一次和第三次,所以就顺序占前两行了,后面三行就空着了;
4、你上楼帖子截图要求的效果与你的源数据不符,附件里有些论七八糟的科目,什么“道法”之类的都出现了,我就只能按照源数据来统计了。一个萝卜一个坑,这个是没办法灵活变更的,你要用来实际用,还需要你自己去改代码;
5、具体代码放下楼;
回复

使用道具 举报

发表于 2019-5-7 09:54 | 显示全部楼层
在放代码之前,先看下前面的两个参数:
存放首行:        4                                                                                               
成绩次数:        5                                                                                               
                                                                                                       
班级        姓名        成绩        语文        数学        英语        物理        道法        历史        地理        生物        总分        bc        jc
11        秦淑婷        成绩1        100        98        115        69        44        50        49        50        575        1        1
11        秦淑婷        成绩2        103        115        116        98        99        90        100        97        818               
11        秦淑婷        成绩3        100        98        115        69        44        50        49        50        575        1        1
11        秦淑婷        成绩4        102        120        117        96        86        100        96        96        813        17        2
11        秦淑婷        成绩5        99        108        107        58        44        49        50        48        563               
班级        姓名        成绩        语文        数学        英语        物理        道法        历史        地理        生物        总分        bc        jc
12        赵梦婕        成绩1        95        95        117        69        50        48        50        50        574        1        2
12        赵梦婕        成绩2        105        104        117        98        96        98        98        96        812               
12        赵梦婕        成绩3        95        95        117        69        50        48        50        50        574        1        2
12        赵梦婕        成绩4        104        111        115        92        97        98        100        93        810        24        1
12        赵梦婕        成绩5        104        112        107        66        47        47        50        48        581               

1、统计表需要新建一个工作表,名字随便取,但要放在最后面,代码也要放在这个工作表里;
2、最前面有两个参数:
     存放首行:我设置的是4,意思是从第4行开始存放统计数据,这个参数可以自己改,但也不要小于4。如果是10,那么第三行到第9行之间全是空白,数据从第10行开始;
     成绩次数:我设定的是5。本来是6个表,但最后一个不能用,所以只能统计前面5个。如果你有10个能用的表,那就把参数设定为10就行了。有一个要求:这10个能用的表都需要放在最前面,因为代码里默认就是从第一个工作表开始读取数据,然后依次读取“成绩次数”设定的表单数量;
3、代码如下:
Application.ScreenUpdating = False
x1 = Cells(1, 2)
x2 = Cells(2, 2)
Dim zd As Object
Set zd = CreateObject("scripting.dictionary")
[a4:q10000].ClearContents
For i = 1 To x2
    hs = 0
    For k = 2 To Worksheets(i).[a10000].End(3).Row
        s1 = Worksheets(i).Cells(k, 1)
        s2 = Worksheets(i).Cells(k, 2)
        s3 = Worksheets(i).Cells(k, 6)
        s4 = Worksheets(i).Cells(k, 7)
        s5 = Worksheets(i).Cells(k, 8)
        s6 = Worksheets(i).Cells(k, 9)
        s7 = Worksheets(i).Cells(k, 10)
        s8 = Worksheets(i).Cells(k, 11)
        s9 = Worksheets(i).Cells(k, 12)
        s10 = Worksheets(i).Cells(k, 13)
        s11 = Worksheets(i).Cells(k, 14)
        s12 = Worksheets(i).Cells(k, 15)
        s13 = Worksheets(i).Cells(k, 16)
        If zd.exists(s2) Then
           hs = zd.Item(s2)
        Else
           zd(s2) = zd.Count + 1
           hs = zd.Count
        End If
        Cells(x1 + (hs - 1) * (x2 + 1), 1) = Worksheets(1).Cells(1, 1)
        Cells(x1 + (hs - 1) * (x2 + 1), 2) = Worksheets(1).Cells(1, 2)
        Cells(x1 + (hs - 1) * (x2 + 1), 3) = "成绩"
        Cells(x1 + (hs - 1) * (x2 + 1), 4) = Worksheets(1).Cells(1, 6)
        Cells(x1 + (hs - 1) * (x2 + 1), 5) = Worksheets(1).Cells(1, 7)
        Cells(x1 + (hs - 1) * (x2 + 1), 6) = Worksheets(1).Cells(1, 8)
        Cells(x1 + (hs - 1) * (x2 + 1), 7) = Worksheets(1).Cells(1, 9)
        Cells(x1 + (hs - 1) * (x2 + 1), 8) = Worksheets(1).Cells(1, 10)
        Cells(x1 + (hs - 1) * (x2 + 1), 9) = Worksheets(1).Cells(1, 11)
        Cells(x1 + (hs - 1) * (x2 + 1), 10) = Worksheets(1).Cells(1, 12)
        Cells(x1 + (hs - 1) * (x2 + 1), 11) = Worksheets(1).Cells(1, 13)
        Cells(x1 + (hs - 1) * (x2 + 1), 12) = Worksheets(1).Cells(1, 14)
        Cells(x1 + (hs - 1) * (x2 + 1), 13) = Worksheets(1).Cells(1, 15)
        Cells(x1 + (hs - 1) * (x2 + 1), 14) = Worksheets(1).Cells(1, 16)
        Cells(x1 + (hs - 1) * (x2 + 1), 15) = Worksheets(1).Cells(1, 17)
        For j = 1 To x2
            If IsEmpty(Cells(x1 + (hs - 1) * (x2 + 1) + j, 1)) Then
               Cells(x1 + (hs - 1) * (x2 + 1) + j, 1) = s1
               Cells(x1 + (hs - 1) * (x2 + 1) + j, 2) = s2
               Cells(x1 + (hs - 1) * (x2 + 1) + j, 3) = "成绩" & i
               Cells(x1 + (hs - 1) * (x2 + 1) + j, 4) = s3
               Cells(x1 + (hs - 1) * (x2 + 1) + j, 5) = s4
               Cells(x1 + (hs - 1) * (x2 + 1) + j, 6) = s5
               Cells(x1 + (hs - 1) * (x2 + 1) + j, 7) = s6
               Cells(x1 + (hs - 1) * (x2 + 1) + j, 8) = s7
               Cells(x1 + (hs - 1) * (x2 + 1) + j, 9) = s8
               Cells(x1 + (hs - 1) * (x2 + 1) + j, 10) = s9
               Cells(x1 + (hs - 1) * (x2 + 1) + j, 11) = s10
               Cells(x1 + (hs - 1) * (x2 + 1) + j, 12) = s11
               Cells(x1 + (hs - 1) * (x2 + 1) + j, 13) = s12
               Cells(x1 + (hs - 1) * (x2 + 1) + j, 14) = s13
               Exit For
            End If
        Next j
    Next k
Next i
Application.ScreenUpdating = True

4、上楼我说过,如果要达到你截图的效果,在正确源数据的基础上,需要修改代码。要修改的就是读取的列数数量,你截图有化学,但源数据却是道法、历史、地理之类的。改起来也容易,就是把读取的列数适当增减就够了,需要稍微懂点代码才能改;
回复

使用道具 举报

发表于 2019-5-8 19:32 | 显示全部楼层
题看不懂啊
回复

使用道具 举报

 楼主| 发表于 2019-5-8 21:31 | 显示全部楼层
hfwufanhf2006 发表于 2019-5-7 09:54
在放代码之前,先看下前面的两个参数:
存放首行:        4                                                                                               
成绩次数:        5                                                                                               

亲 你给我做一个  样板 我看看可以吗

回复

使用道具 举报

 楼主| 发表于 2019-5-8 21:33 | 显示全部楼层

亲就是 把几次成绩 汇总在一起

回复

使用道具 举报

发表于 2019-5-9 08:54 | 显示全部楼层
dqmly2004 发表于 2019-5-8 21:31
亲 你给我做一个  样板 我看看可以吗

上面已经详细说明了啊:1、首先插入一个新空白表,放在最后面,然后把代码复制粘贴到这个新表里;

2、再定义两个参数:
a1单元格输入“存放首行:“,a2单元格输入数字 4
b1单元格输入“成绩次数:",b2单元格输入数字 5
这二步应该很简单吧,然后就没有然后了,运行代码就行了;
3、关于参数的含义以及代码修改应该注意的事项,前面都讲清楚了,没有再讲的。   

回复

使用道具 举报

发表于 2019-5-9 18:27 | 显示全部楼层
dqmly2004 发表于 2019-5-8 21:33
亲就是 把几次成绩 汇总在一起

相加? 还是直接复制在一起 还有以哪个为条件?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 13:22 , Processed in 0.302526 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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