Excel VBA 某列以24个连续0值作为分段条件对各分段分别进行求和的代码

时间: 2023-09-08 10:05:12 浏览: 116
### 回答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值作为分段条件,对各个分段分别进行求和的功能。具体的操作步骤和数据列的位置请根据实际情况进行调整。

相关推荐

最新推荐

recommend-type

年会 抽奖 小程序 EXCEL VBA

年会 抽奖 小程序 EXCEL VBA 灵活的Excel小工具,可定制奖项名字、奖项数量和参与抽奖名单。
recommend-type

Excel VBA编写代码操控 OneNote

遇到困难,网站为Flash图片,图片中的一些按钮之类大同小异总有些变化,所以编好的代码由于这种变化经常识别不了,无意中发现,借助微软OneNote的OCR图片识别功能可做到,故整理了此文档供vb及VBA开发者参考
recommend-type

EXCEL_VBA常用代码大全.doc

EXCEL_VBA常用代码大全(有具体的实例,非常适用开始使用的人员学习使用。要边学边练才好。(有具体的实例,非常适用开始使用的人员学习使用。要边学边练才好。(有具体的实例,非常适用开始使用的人员学习使用。要边学...
recommend-type

VBA将excel数据表生成JSON文件

本文给大家汇总介绍了几种使用VBA处理EXCEL并生成JSON文件的方法和思路,非常的实用,有需要的小伙伴可以参考下。
recommend-type

EXCEL VBA代码优化

很多Excel VBA文章和图书都介绍过如何优化VBA代码,使代码运行得更快。下面搜集了一些使Excel VBA代码运行更快的技术和技巧,基本上都是实践经验的总结。如果您还有其它优化Excel VBA代码的方法,可以在本文后留言或...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。