跳至主要内容

Kutools for Office — 一套工具,五种功能。事半功倍。

如何在 Excel 中对每5行或列求平均值?

Author Xiaoyang Last modified

在 Excel 中处理大型数据集时,通常需要对每组行或列(例如每5行或每5列)进行平均值计算。虽然您可以手动插入公式,如 =AVERAGE(A1:A5)=AVERAGE(A6:A10)=AVERAGE(A11:A15) 等,但如果您的列表包含数百或数千个单元格,这种方法很快变得不切实际。重复这些操作不仅耗时,而且容易出错。幸运的是,Excel 提供了多种方法来自动生成此任务,使数据分析更加高效且不那么繁琐。本文将介绍几种实用的方法来计算每5行或列的平均值,包括基于公式的解决方案、Excel 插件、VBA 自动化和数据透视表技术,以帮助您为特定场景选择最佳解决方案。

使用公式对每5行或列求平均值

使用 Kutools for Excel 对每5行求平均值

使用 VBA 代码对每5行或列求平均值

使用数据透视表对每5行求平均值


使用公式对每5行或列求平均值

如果您更喜欢使用标准的 Excel 公式,则无需插件或脚本即可自动计算每5行或列的平均值。这种方法特别适用于静态数据集,您只需生成一组平均值以支持您的分析即可。但是,需要注意正确引用数据并处理任何空白或不规则间隔。

以下示例演示了如何计算某一列中每5行的平均值:

1. 在您想要结果的第一个单元格(例如 C2)中输入以下公式:

=AVERAGE(OFFSET($A$2,(ROW()-ROW($C$2))*5,,5,))

这里 A2 是数据列的起始单元格,C2 是公式输出单元格,5 是间隔(要平均的行数)。请根据实际数据调整这些引用。

输入公式后,按下 Enter 键。第一个平均值结果将显示出来。参见截图:

a screenshot of using formula to calculate the average of every5 rows

2. 选择公式单元格,然后拖动填充柄向下移动,直到遇到错误值(例如如果剩余数据少于5个值,则会显示 #DIV/0! 错误)。这将自动检索每组5行的平均值。参见截图:

a screenshot showing all results

提示与注意事项:如果您的数据不能完美分组,可以使用 IFERROR() 等错误处理函数来抑制错误值,例如:

=IFERROR(AVERAGE(OFFSET($A$2,(ROW()-ROW($C$2))*5,,5,)),"")

要计算每5列的平均值,请在一行中应用以下公式(放在 A3 并向右拖动):

=AVERAGE(OFFSET($A$1,,(COLUMNS($A$3:A3)-1)*5,,5))

这里 A1 是起始单元格,A3 是公式输出单元格,5 是每组中的列数。根据您的数据布局调整单元格引用。
输入公式并按下 Enter,向右拖动填充柄,直到遇到错误值为止。参见截图:

a screenshot of using formula to calculate the average of every5 columns

这种基于公式的方法非常适合快速的一次性计算,或者当您不想使用额外工具时。然而,当您的数据大小或形状发生变化时,您可能需要调整公式或手动更新单元格范围,并且处理不完整的组可能需要小心谨慎。


使用 Kutools for Excel 对每5行求平均值

Kutools for Excel 提供了一个便捷的图形化解决方案,如果您经常需要对行组进行平均值计算而不必管理复杂的公式。通过“隔行插入分页符”和“数据分页统计”功能,您只需点击几下即可快速分割数据并计算批量平均值。该方法特别适用于希望在重复间隔上应用平均值并将分组直接可视化到工作表中的情况。

下载并安装 Kutools for Excel 后,请按照以下步骤操作:

1. 单击 Kutools Plus > 打印 > 隔行插入分页符。参见截图:

a screenshot of enabling the Insert Page Break Every Row feature

2. 在“隔行插入分页符”对话框中,指定间隔(例如5)以在每5行之后插入分页符。这样 Kutools 将自动分割您的数据。参见截图:

a screenshot of specifying the interval of rows

3. 接下来,单击 Kutools Plus > 打印 > 数据分页统计。参见截图:

a screenshot of enabling the Paging Subtotals feature of Kutools

4. 在“数据分页统计”对话框中,选择要平均的列,然后选择“平均值”作为计算方法。参见截图:

a screenshot of choosing Average as the paging subtotals

5. 单击“确定”,Kutools 将立即在每个5行间隔插入带平均值的小计行。参见截图:

a screenshot showing the average of every5 rows

立即下载并免费试用 Kutools for Excel !

Kutools 让重复的数据分组和分析变得轻松完成,无需调整公式或编写任何脚本。但是请注意,插入的分页符可能会影响打印布局和视图,因此如果不需要用于报告,可以在使用后将其删除。


使用 VBA 代码对每5行或列求平均值

如果您需要反复对固定数量的行或列(如大型或不断变化的数据集)计算平均值,使用 VBA 自动化这一过程可以节省大量手工操作。VBA 允许您循环遍历数据,按需分组,并为每批输出平均结果。这种方法特别适合高级用户或那些处理动态数据块的用户,并避免了公式过多占用工作表的情况。下面是一个通用的 VBA 宏,您可以轻松适应自己的需求。

自动化每5行求平均值

1. 单击 开发工具 > Visual Basic 打开 Microsoft Visual Basic for Applications 窗口。然后,单击 插入 > 模块 并将以下代码粘贴到模块中:

Sub AverageEvery5Rows()
    Dim DataRange As Range
    Dim OutputCell As Range
    Dim GroupSize As Integer, i As Integer, j As Integer
    Dim LastRow As Long, StartRow As Long
    Dim SumValue As Double, CountValue As Integer
    
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    
    Set DataRange = Application.InputBox("Select the data range to average (single column)", xTitleId, Selection.Address, Type:=8)
    Set OutputCell = Application.InputBox("Select the first cell for output", xTitleId, , Type:=8)
    GroupSize = Application.InputBox("Enter group size (e.g. 5)", xTitleId, 5, Type:=1)
    
    On Error GoTo 0
    
    If DataRange Is Nothing Or OutputCell Is Nothing Then Exit Sub
    
    LastRow = DataRange.Rows.Count
    StartRow = 1
    i = 0
    
    Do While StartRow <= LastRow
        SumValue = 0
        CountValue = 0
        
        For j = 0 To GroupSize - 1
            If (StartRow + j) <= LastRow Then
                SumValue = SumValue + DataRange.Cells(StartRow + j, 1).Value
                CountValue = CountValue + 1
            End If
        Next j
        
        If CountValue > 0 Then
            OutputCell.Offset(i, 0).Value = SumValue / CountValue
        Else
            OutputCell.Offset(i, 0).Value = ""
        End If
        
        StartRow = StartRow + GroupSize
        i = i + 1
    Loop
End Sub

2. 要执行代码,请单击 Run button 按钮或按下 F5。选择您的数据范围(一列),然后选择输出的起始单元格,并指定组大小(例如5)。宏将在指定的输出列中依次输出每组5行的平均值。

您可以使用类似的宏来对每5列求平均值。

自动化每5列求平均值:

Sub AverageEveryNColumns()
    Dim DataRange As Range
    Dim OutputCell As Range
    Dim GroupSize As Long
    Dim totalCols As Long, totalRows As Long
    Dim startCol As Long, endCol As Long, outCol As Long
    Dim v As Variant
    Dim r As Long, c As Long
    Dim sumVal As Double, cntVal As Long
    Dim xTitleId As String
    xTitleId = "KutoolsforExcel"
    On Error Resume Next
    Set DataRange = Application.InputBox("Select the data range (single rows)", _
                                         xTitleId, Selection.Address, Type:=8)
    Set OutputCell = Application.InputBox("Select the first cell for output (results will spill to the right)", _
                                          xTitleId, , Type:=8)
    GroupSize = Application.InputBox("Enter group size (e.g. 5)", xTitleId, 5, Type:=1)
    On Error GoTo 0
    
    If DataRange Is Nothing Or OutputCell Is Nothing Then Exit Sub
    If GroupSize < 1 Then
        MsgBox "Group size must be >= 1.", vbExclamation
        Exit Sub
    End If
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Dim prevCalc As XlCalculation
    prevCalc = Application.Calculation
    Application.Calculation = xlCalculationManual
    
    totalCols = DataRange.Columns.Count
    totalRows = DataRange.Rows.Count
    v = DataRange.Value
    outCol = 0
    For startCol = 1 To totalCols Step GroupSize
        endCol = startCol + GroupSize - 1
        If endCol > totalCols Then endCol = totalCols
        sumVal = 0
        cntVal = 0
        For r = 1 To totalRows
            For c = startCol To endCol
                If Not IsEmpty(v(r, c)) Then
                    If IsNumeric(v(r, c)) Then
                        sumVal = sumVal + CDbl(v(r, c))
                        cntVal = cntVal + 1
                    End If
                End If
            Next c
        Next r
        If cntVal > 0 Then
            OutputCell.Offset(0, outCol).Value = sumVal / cntVal
        Else
            OutputCell.Offset(0, outCol).Value = ""
        End If
        outCol = outCol + 1
    Next startCol
CleanExit:
    Application.Calculation = prevCalc
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

使用数据透视表对每5行求平均值

另一种实用的计算每5行平均值的方法是使用数据透视表,并结合序列编号或索引列对数据进行分组。这种方法特别适用于使用结构化表格数据并需要快速交互式汇总而无需编写公式或使用插件的用户。数据透视表能够动态处理数据变更并支持灵活分组,非常适合大型数据集或定期报告任务。

以下是使用辅助列和数据透视表执行此操作的方法:

1. 在数据旁边添加一个“索引”或“组”列,以标记每组5行。在第一行数据(B2)中输入:

=INT((ROW()-ROW($A$2))/5)+1

此公式按顺序标记每一行,并为每5行分配相同的组号。沿数据集向下填充此公式。

2. 选择您的数据和新的索引列,然后单击 插入 > 数据透视表。在数据透视表创建对话框中,确认您的数据范围并选择放置数据透视表的位置。

3. 在新创建的数据透视表字段列表中,将“组”字段拖到区域,将值字段(例如“销售额”)拖到区域。

4. 单击值区域的下拉箭头,选择值字段设置,并选择平均值。

现在,您的数据透视表显示了原始数据每5行的平均值,通过辅助列方便地进行了分组。

数据透视表方法的主要优势在于其灵活性以及当源数据更改时易于更新。但是,它需要添加辅助列,可能不适合需要保持精确格式或未更改的数据情况。


相关文章:

如何在新数字进入时对列的最后5个值求平均值?

如何在 Excel 中对前或后3个值求平均值?


最佳Office办公效率工具

🤖 Kutools AI 助手:以智能执行为基础,彻底革新数据分析 |代码生成 |自定义公式创建|数据分析与图表生成 |调用Kutools函数……
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入……
高级LOOKUP多条件VLookup|多值VLookup|多表查找|模糊查找……
高级下拉列表快速创建下拉列表 |依赖下拉列表 | 多选下拉列表……
列管理器添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域与列……
特色功能网格聚焦 |设计视图 | 增强编辑栏 | 工作簿及工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按名单发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/倾斜/删除线等)……
15大工具集12项 文本工具添加文本删除特定字符等)|50+种 图表 类型甘特图等)|40+实用 公式基于生日计算年龄等)|19项 插入工具插入二维码从路径插入图片等)|12项 转换工具小写金额转大写汇率转换等)|7项 合并与分割工具高级合并行分割单元格等)| ……
Kutools支持多种语言——可选择英语、西班牙语、德语、法语、中文等40多种语言!

通过Kutools for Excel提升您的Excel技能,体验前所未有的高效办公。 Kutools for Excel提供300多项高级功能,助您提升效率并节省时间。 点击此处获取您最需要的功能……


Office Tab为Office带来多标签界面,让您的工作更加轻松

  • 支持在Word、Excel、PowerPoint中进行多标签编辑与阅读
  • 在同一个窗口的新标签页中打开和创建多个文档,而不是分多个窗口。
  • 可提升50%的工作效率,每天为您减少数百次鼠标点击!

所有Kutools加载项,一键安装

Kutools for Office套件包含Excel、Word、Outlook和PowerPoint的插件,以及Office Tab Pro,非常适合跨Office应用团队使用。

Excel Word Outlook Tabs PowerPoint
  • 全能套装——Excel、Word、Outlook和PowerPoint插件+Office Tab Pro
  • 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
  • 协同更高效——提升Office应用间的整体工作效率
  • 30天全功能试用——无需注册,无需信用卡
  • 超高性价比——比单独购买更实惠