Excel VBA 某列以24个连续0值作为分段条件对各分段分别进行求和的代码
时间: 2023-09-08 16:05:12 浏览: 159
### 回答1:
以下是 Excel VBA 某列以 24 个连续 0 值作为分段条件对各分段分别进行求和的代码:
Sub SumBySegment()
Dim lastRow As Long
Dim sum As Double
Dim i As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To lastRow
If Cells(i, "A").Value = 0 Then
sum = sum + Cells(i, "B").Value
Else
Cells(i, "C").Value = sum
sum = 0
End If
Next i
Cells(i, "C").Value = sum
End Sub
请注意,此代码假定数据位于 A 列和 B 列中,结果将在 C 列中显示。
### 回答2:
以下是一个使用Excel VBA的示例代码,用于将某列以24个连续0值作为分段条件,对各分段分别进行求和。
```vba
Sub SumBySegments()
Dim lastRow As Long ' 最后一行的索引
Dim col As Range ' 列范围
Dim i As Long ' 循环变量
Dim segmentStart As Long ' 分段起始行索引
Dim segmentEnd As Long ' 分段结束行索引
Dim segmentSum As Double ' 分段求和结果
' 设置要操作的列范围,此处假设为A列,可根据需要修改
Set col = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
' 重置起始行索引和分段求和结果
segmentStart = 1
segmentSum = 0
' 循环遍历每一行
For i = 1 To col.Rows.Count
' 判断当前行的值是否为0
If col.Cells(i).Value = 0 Then
' 如果当前行的值为0,则进行分段判断
If segmentSum = 0 Then
' 如果分段求和结果为0,表示当前为新的分段起始位置
segmentStart = i
End If
' 累加当前行的值到分段求和结果
segmentSum = segmentSum + col.Cells(i).Value
Else
' 如果当前行的值不为0,则进行分段判断
If segmentSum <> 0 Then
' 如果分段求和结果不为0,表示当前为分段结束位置
segmentEnd = i - 1
' 输出分段起始位置和结束位置,以及分段求和结果
Debug.Print "Segment: " & segmentStart & " - " & segmentEnd
Debug.Print "Sum: " & segmentSum
End If
' 重置分段起始位置和分段求和结果
segmentStart = 0
segmentSum = 0
End If
Next i
End Sub
```
代码首先定义了需要操作的列范围,然后通过循环遍历每一行,在每一个0值开始的位置计算分段求和。通过判断当前行的值是否为0,以及分段求和结果是否为0来确定每个分段的起始位置和结束位置。最后通过打印输出显示分段的起始位置和结束位置,以及分段求和结果。
### 回答3:
以下是可以用于Excel VBA的代码,实现了将某列以24个连续0值作为分段条件,对各个分段进行求和的功能:
```vba
Sub SumBySegments()
Dim ws As Worksheet
Dim lastRow As Long
Dim startRow As Long
Dim endRow As Long
Dim sumRange As Range
Dim sumValue As Double
' 设置操作的工作表
Set ws = ThisWorkbook.Worksheets("Sheet1")
' 获取最后一行的行号
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' 初始化起始行号和求和值
startRow = 1
sumValue = 0
' 遍历每一行数据
For i = 1 To lastRow
' 判断当前行是否为0值
If ws.Cells(i, "A").Value = 0 Then
' 如果是0值,则累加求和值
sumValue = sumValue + ws.Cells(i, "B").Value
ElseIf i - startRow >= 24 Then
' 如果不是0值且起始行号到当前行号的距离达到24行,则表示一个分段结束
' 将求和值放入对应的范围,并重新初始化起始行号和求和值
Set sumRange = ws.Range(ws.Cells(startRow, "C"), ws.Cells(i - 1, "C"))
sumRange.Value = sumValue
sumValue = 0
startRow = i
End If
Next i
' 处理最后一个分段的求和值
If lastRow - startRow >= 24 Then
Set sumRange = ws.Range(ws.Cells(startRow, "C"), ws.Cells(lastRow, "C"))
sumRange.Value = sumValue
End If
End Sub
```
请将代码复制到Excel的VBA编辑器中,然后调用`SumBySegments`子过程即可实现对某列以24个连续0值作为分段条件,对各个分段分别进行求和的功能。具体的操作步骤和数据列的位置请根据实际情况进行调整。
阅读全文