根据某列的数据计算平均值

Sub CalculateAverageInRanges()
    Dim ws As Worksheet
    Dim lastKRow As Long
    Dim i As Long
    Dim startRow As Long
    Dim endRow As Long
    Dim avg As Double
    Dim outputRow As Long
    
    ' 设置工作表
    Set ws = ThisWorkbook.Sheets("Sheet1") ' 请根据需要修改工作表名称
    
    ' 确定K列的最后一行
    lastKRow = ws.Cells(ws.Rows.Count, "K").End(xlUp).Row
    
    ' 初始化输出行
    outputRow = 1
    
    ' 遍历K列的每一对相邻行号
    For i = 1 To lastKRow - 1
        startRow = ws.Cells(i, 11).Value ' K1, K2, ...
        endRow = ws.Cells(i + 1, 11).Value ' K2, K3, ...
        
        ' 计算B列指定范围内的平均值
        If endRow > startRow Then
            avg = Application.WorksheetFunction.Average(ws.Range("B" & startRow & ":B" & endRow - 1))
        Else
            avg = Application.WorksheetFunction.Average(ws.Range("B" & startRow & ":B" & startRow))
        End If
        
        ' 将结果写入D列
        ws.Cells(outputRow, 4).Value = avg ' D列
        
        ' 移动到下一个输出行
        outputRow = outputRow + 1
    Next i
    
    MsgBox "平均值计算完成。"
End Sub
  1. 读取K列的行号:代码读取K列的值,假设这些值代表行号(例如,K1表示开始行号,K2表示结束行号)。

  2. 计算B列的平均值:对于每一对K列的值,计算从起始行到结束行之间的B列的平均值。endRow - 1 用来确保范围正确,因为通常计算的是从 startRowendRow - 1 的数据。

  3. 结果输出:将计算的平均值输出到D列的相应行中。

  4. 处理特殊情况:如果 startRowendRow 是相同的,代码将计算那一行B列的值(避免错误的范围选择)。

注意事项

  • 数据的有效性:确保K列的数值确实是有效的行号,并且在B列中相应的单元格中有数据可供计算。
  • K列行号顺序:代码假设K列的数值是按升序排列的(例如,K1 < K2 < K3),如果不是,请确保数据顺序正确。
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值