Sub main()'根据第1列(品种)加入合计第3列(数量)
Dim intStartRow As Integer '开始行Dim intEndRow As Integer '结束行Dim calculateCol As Integer '需要累计的列Dim nameCol As Integer '第1列,用于判断的列
Dim i As Integer '外层循环Dim j As Integer '内层循环
Dim flagRow As Integer '标志行Dim flagSum As Integer '因为数量是整数
Dim intAddRow As Integer ' 一共增加的行数intStartRow = 4intEndRow = 20
intAddRow = 0 '统计增加了多少行,以便在合并单元格时知道结束行要加几行i = intEndRowDo While i >= intStartRow '当大于开始行的时候运行循环 'flagSum = Val(Cells(i, 3).Value) flagRow = i For j = i - 1 To intStartRow Step -1 'MsgBox Cells(i, 1). & Cells(j, 1) If Cells(i, 1).Value = Cells(j, 1).Value Then flagSum = flagSum + Val(Cells(i, 3).Value) '第三列是数量列 Else If j + 1 <> i Then '不是同一行 MsgBox flagRow & "行到" & j + 1 & "行" & "合计" & flagSum Rows(flagRow + 1).Insert intAddRow = intAddRow + 1 End If i = j '重新从上一行开始 Exit For End If Next If j < intStartRow Then '说明内层循环已经到顶了,该结束循环了 '加上这行的目的是:如果i=5,j到了小于4的时个,还有两行,它们又不是同一行,当然要处理了 If j + 1 <> i Then '不是同一行 MsgBox flagRow & "行到" & j + 1 & "行" & "合计" & flagSum intAddRow = intAddRow + 1 End If Exit Do End If Loop
If intAddRow <> 0 Then MsgBox "增加了" & intAddRow & "行"
End Sub
