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 = 4
intEndRow = 20
intAddRow = 0 '统计增加了多少行,以便在合并单元格时知道结束行要加几行
i = intEndRow
Do 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