MICROSOFT

EP02. “Custom Average Function 自定义平均值函数”

首页 Microsoft 工具 Excel · VBA · Function and Sub · EP02
约 4 分钟· #EP02#Excel#Function and Sub
🔒 登录后可标记已读
  • 延续 EP01 的自定义函数概念,做一个「排除极端值再算平均」的自定义函数 CUSTOMAVERAGE
  • 这个函数只统计落在指定上下限区间内的数字
  • 前置知识:EP01 的自定义函数写法和 For Each 循环
  • 学完能自己写「带筛选条件」的自定义统计函数

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


建立自定义函数:CUSTOMAVERAGE

Function CUSTOMAVERAGE(rng As Range, lower As Integer, upper As Integer)

Dim cell As Range, total As Integer, count As Integer

For Each cell In rng
    If cell.Value >= lower And cell.Value <= upper Then
        total = total + cell.Value
        count = count + 1
    End If
Next cell

CUSTOMAVERAGE = total / count

End Function

逻辑说明

  • 函数带三个参数:要统计的范围 rng、下限 lower、上限 upper
  • 逐一检查范围里每个单元格,只有数值落在 lowerupper 之间才纳入统计(total 累加、count 计数)
  • 循环结束后,用 total / count 算出平均值——因为只统计了区间内的数字,极端值(超出上下限的)不会拉低或拉高平均结果

使用方式

=CUSTOMAVERAGE(A1:A20,10,100),只会平均 A1:A20 里介于 10 到 100 之间的数字。


学完你会

  • ✅ 写一个带多个参数(范围 + 上下限)的自定义函数
  • ✅ 用 total/count 两个累加变量算出符合条件数字的平均值
  • ✅ 知道自定义函数可以做到内建 AVERAGEIFS 之外更灵活的筛选逻辑

常见错误

  • 上下限参数顺序填反(该填小的填成大的),条件永远不成立,平均值算出除以 0 的错误
  • 忘记极端值本身还是会被读到、只是不纳入统计,误以为函数会先删除极端值
  • totalcount 没有在循环外先归零,累加结果跟预期不符

Sources

Blog / Website:

  1. Custom Average Function