把年级列合并,合并后把总分汇总。
先是啰嗦话:
首先是对年级列进行合并,逻辑就是判断这一个的值是否等于上个值,由于excel的机制,合并单元格后会保留最上面的值,所以如果从上面判断的话,直接就断了,第二个值就是空值了,所以我们要从下面开始判断。
其次呢由于年级列相同的年级并没有挨着出现,所以如何直接合并,就是上面一坨二年级,中间一坨一年级,下面再一坨二年级,所以要对年级进行排序,让一年级的在一坨,二年级的在一坨。
然后合并了年级,我们还需要对总成绩汇总累加。
最后关闭提示,运行完后别忘了开起提示
总结:
1.对年级列排序(sort)
2.对年级列合并(merge)
3.对汇总列累加
4.关开提示
'合并单元格
Sub 合并单元格()
'首先定义我们的参数
Dim a, b As Long
Dim c, last_row As Byte
Dim d As Range
'因为合并单元格的时候会有提示,所以这里关闭这个提示
Application.DisplayAlerts = False
'定位到q的边界行数
last_row = Cells(Rows.Count, "q").End(xlUp).Row
'申明一个单元格
Set d = Range("q1").CurrentRegion
'对这个单元格中的q列进行排序
d.Sort Cells(2, "q"), 1, Header:=1
'从最下面那行开始循环,步长-1,逐步向上
For c = last_row To 2 Step -1
'进行累加操作
Cells(c, "w") = Cells(c, "v").Value + Cells(c, "w")
'如果循环中的这一单元格的值等于上一个单元格的值
If Cells(c, "q").Value = Cells(c - 1, "q").Value Then
'合并这两个单元格
Range(Cells(c, "q"), Cells(c - 1, "q")).Merge
'合并汇总单元格
Range(Cells(c, "w"), Cells(c - 1, "w")).Merge
End If
Next c
'打开提示
Application.DisplayAlerts = True
End Sub
能运行。