第3个回答 2011-09-01
在该工作表标签上,输入如下代码,然后运行该段代码,或运行宏“合并相同相邻单元格并对相应单元格求和”,下次打开该工作簿时,一定要将宏安全性设为中,并启用宏,方可再次运行该代码。注意:在运行代码前先排序,按照图号第一关键字、名称第二关键字进行排序,排完序后在运行该段代码。
Sub 合并相同相邻单元格并对相应单元格求和()
Dim xRow As Integer
Dim i As Integer
Dim a As Integer
'a为中间变量,表示每次合并的行数
'xRow为数据区域最后一行行号
'若起始行不为1,则可将语句i=1重新赋值
xRow = Range("A1").CurrentRegion.Rows.Count
a = 0
For i = 1 To xRow
If Cells(i + 1, 1) = Cells(i - a, 1) And Cells(i + 1, 2) = Cells(i - a, 2) Then
'对相应单元格求和,iCol1为对应列号
Cells(i - a, 3) = Cells(i - a, 3) + Cells(i + 1, 3)
a = a + 1
Else
If a > 0 Then
Excel.Application.DisplayAlerts = False
'合并相同相邻单元格
Range(Cells(i - a, 1), Cells(i, 1)).MergeCells = True
Range(Cells(i - a, 2), Cells(i, 2)).MergeCells = True
'合并要求和列相应单元格
Range(Cells(i - a, 3), Cells(i, 3)).MergeCells = True
a = 0
Excel.Application.DisplayAlerts = True
End If
End If
Next
End Sub
代码原理:第一列、第二列相同相邻单元格内容的情况下进行合并,对第3列单元格进行相加。因此在运行该段代码前,先对数据区域进行排序,排序关键字以“图号”和“名称”进行排序。这样才能保证相同图号及名称的记录在一起。本回答被提问者采纳