Excel 如何对同列数据中部分数据求和?
1、我们可以看到数据源,可以得到:
1.学号:唯一性,字符长度一致;
2.求和:每个考生的科目不一,间隔行数不同,即求和区域有变化;
3.难点:需要作出当前学号距离下个相邻学号的间距;
4.联系:各个学号之间是否存在联系,比如行号。
以上,我们对数据源添加三个辅助列,分步得到结果,利于学习。

2、现在对辅助列的用到函数说明:
B列:需要用到的函数Len;
C列:需要用到的函数If、Row;
D列:需要用到的函数Iferror、If、Small、Countif;
E列:需要用到的函数If、Len、Sum、Offset、Match。
1、1、转化数据列字符长度
在B列单元格输入:=LEN(A2),即可得到字符长度;
操作如GIF动图所示!

2、2、转化学号所在行的行号
在步骤1基础上,可以区别成绩与学号的差异;
在C列单元格输入:=IF(LEN(A2)=6,ROW(),"")
操作如GIF动图所示!

3、3、统计相邻学号之间的间隔行数
分解到这,可以得到“相邻学号间隔”的值,如相邻A与B,即等于B-A-1;
使用small函数和countif函数组合函数:1.countif函数统计当前学号长度重复个数;2.在此基础上在利用small函数取值C列对应行号;3.相减即可得到当前学号距离下个学号的间隔行数;4.if函数判断当前行是否是学号行。
在D列单元格输入:=IFERROR(IF(B3=6,SMALL(C:C,COUNTIF($B$3:B3,B3)+1)-SMALL($C$3:C3,COUNTIF($B$3:B3,B3)),"")-1,"")
如GIF动图所示!

4、解析步骤3的关键点
1.因为学号的行号是从小到大,作为Small函数其引用区域,
2.因位学号的长度重复次数是从1累计,加1即可得到下个相邻学号,作为Small函数的K值。
5、4、最终结果的求和
使用sum和offset组合函数统计求和结果:1.offset的参数定位为:表头,即A1;2.使用match定位当前学号位置,即row()下偏移值;3.引用同行“重复间隔”,即height引用行数;4.即得到求和区域,使用Sum函数求和;5.4.if函数判断当前行是否是学号行。
在E列输入公式:IF(LEN(A2)=6,SUM(OFFSET($A$1,MATCH(A2,A:A,0),,D2,)),"");
如GIF动图所示!

6、解析步骤4的关键点
1.Match函数的巧妙使用,利用学号的位置,解决Offset函数的Row参数,即下移参数,定位求和区域的上界标;
2.使用Offset函数,前面三步主要是解决height,即引用行数,定位求和区域的下界标;;