EXCEL内置工作表函数用着不顺手怎么办?走,写个VBA自定义函数套路小白去!
- 2026-11-06 17:28:23
EXCEL内置工作表函数用着不顺手怎么办?走,写个VBA自定义函数套路小白去!



好了朋友们,今天和大家分享的内容就是这些了!喜欢我的文章请分享、转发、点赞和收藏吧!如有任何问题可以随时私信我哦! 
推荐阅读

欢迎转发和点一下“在看”,文末留言互动!
置顶公众号或设为星标及时接收更新不迷路

朋友们好,今天来聊一聊VBA的那些事儿。我们日常使用的一些EXCEL函数,比如SUM函数、COUNTIF函数、AVERAGE函数等等,都是可以通过VBA的自定义函数来实现的。而且,除了基本的功能外,我们还可以通过自定义函数来添加额外的条件使函数可以完成一些更复杂的计算和操作。
今天我们就通过VBA来创建一个按条件求平均值的自定义函数吧!

题目给了一个数据表,要求我们计算所有大于200并且小于300的数值的平均值。在EXCEL自带的函数中有AVERAGEIF这个函数,但不能满足我们今天这个题目的要求。下面就来看看如何利用VBA来达到同样的效果吧!
01
VBA自定义函数

完整代码如下:
Functionmyave(rng As Range, lower As Integer, upper As Integer)Dimmycell As Range, total As Integer, count As Integertotal = 0ForEach mycell In rngIfmycell.Value >= lower And mycell.Value <= upper Thentotal = total + mycell.Valuecount = count + 1EndIfNextIfcount <> 0 Then myave = total / countEnd Function
由于是自定义函数,因此可以添加个性化的条件。
Functionmyave(rng As Range, lower As Integer, upper As Integer)这里就添加了rng、lower和upper这三个参数。当如,如果你需要,还可以添加更多的参数。
total = 0ForEach mycell In rngIfmycell.Value >= lower And mycell.Value <= upper Thentotal = total + mycell.Valuecount = count + 1EndIfNext
整个过程其实很简单的。通过一个For each语句循环判断,凡是值大于200并且小于300的数值,都会进行累加并赋值给变量total。同时也会对数量进行累加并赋值给变量count。
Ifcount <> 0Then myave = total / count最后结果输出。
02
自定义函数可以像工作表函数一样正常使用

在单元格D2中输入下列公式,确认即可。
=myave(B2:B21,200,300)在这个公式中,B2:B21是数据区间,200和300分别是小值和大值这两个参数。
我就知道你“在看”

本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。