|
- Sub 求和4()
- Dim arr, i&
- Dim iSum& '求和
- Dim startRow& '开始行标记
-
- i = Range("d" & Rows.Count).End(xlUp).Row '取D列最后一行数据行行号
- arr = Range("c3:f" & i) '.CurrentRegion '取C3区域
- For i = LBound(arr) + 1 To UBound(arr)
- '如果有单元格为空,则跳过计算过程
- If Len(arr(i, 2)) = 0 Or Len(arr(i, 3)) = 0 Then GoTo 0
- If Len(arr(i, 1)) > 0 Then '如果C列单元格不为空,则标志着一轮求和开始
- startRow = i '要写入求和的行号(此处是数组,则是数组的一维坐标)
- End If
- If arr(i, 3) > arr(i, 2) Then iSum = iSum + Abs(arr(i, 3) - arr(i, 2))
- '累加求和,E列减去D列,要求E列大于D列才会参与运算
- If i = UBound(arr) Then arr(startRow, 4) = iSum: Exit For
- '如果到达数据最后一行则写入累加数据,退出循环
-
- '判断下一行是否有数据标志,如果有,则此轮求和结束
- If Len(arr(i + 1, 1)) > 0 Then
- arr(startRow, 4) = iSum '写入求和
- iSum = 0 '清零
- startRow = 0 '清零
- End If
- 0:
- Next
- Range("c3").Resize(UBound(arr), UBound(arr, 2)) = arr
- '把计算好的数据回写入单元格
- End Sub
复制代码 |
|