vba 自定义function返回值_用vba解决excel如何求前面连续为0的个数

领导布置了任务,要求每天统计当月的发展量,并且统计有多少业务员最多连续多少天发展为0的情况,统计的表格是这样的。

0e70693f12b25a0fe3ec55578d67f2b9.png

用几行简单的VBA语言就能解决这个问题

首先打开vba编辑窗口,点击开发工具——visual basic(如果没有这个菜单,点击文件——选项——自定义功能区——右边窗口勾上开发工具)弹出编辑窗口,点击左边vbaproject下的模块进入编辑界面

350f0c4d2d5e22350b8bbc00512cee55.png

我们可以自定义一个函数count0,参数为需要统计的区域,思路为从统计的第一列起,依次统计相邻为0的个数,一直统计到最后一列,取其中为0次数最多的为函数返回值,代码如下:

Function count0(r As Range)

r1 = r.Rows.Count

If r1 > 1 Then

MsgBox ("该函数只能在一行中统计")

End If

Num = r.Columns.Count

Max = 0

max1 = 0

For i = 1 To Num

For k = i To Num

If r.Columns(k) = 0 Then '发现当前值为0,继续看相邻下一个

max1 = max1 + 1

Else

k = Num '当前不为0,结束

End If

Next k

If max1 > Max Then

Max = max1

End If

max1 = 0

Next i

count0 = Max

End Function

编写好函数之后,保存文件,注意在保存文件中选择excel启用宏的工具簿,在O列输入刚刚写好的函数=count0(b2:l2),将公式复制到下面几行,得出结果如下图。

680268c6ae1e9cd9b0cc1dc8c888dc08.png
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页