ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何编写返回一行数字中连续数字个数的自定义函数呢?

如何编写返回一行数字中连续数字个数的自定义函数呢?

作者:绿色风 分类: 时间:2022-08-17 浏览:118
楼主
0Mouse
Q:如何编写返回一行数字中连续数字个数的自定义函数呢?
如下图所示,希望在I2输入一个自定义函数,下拉后即可返回各行A~H列单元格内连续数字的个数。

 
注意:各行A~H列单元格内的数字可能是乱序,如D8:E8,也可能出现重复,如C9:D9、G9:H9。所编写的自定义函数必须不受数据乱序和重复的影响。
A:打开目标Excel文档,按<Alt+F11>组合键,依次单击“插入”-“模块”,在显示的空白窗口中录入以下代码:
  1. Function xqoa(Rng As Range)
  2.     '判断是否符合函数运算条件
  3.     If Rng.Cells.Count = 1 Then
  4.         xqoa = 0
  5.         Exit Function
  6.     ElseIf Rng.Rows.Count > 1 Then
  7.         xqoa = "选区超过一行了"
  8.         Exit Function
  9.     End If
  10.     '将所选区域内的数字按照从小到大排列
  11.     Dim Arr, i&, j&, k&, temp
  12.     Arr = Rng.Value
  13.     k = 2
  14.     For i = 1 To Rng.Cells.Count
  15.         For j = k To Rng.Cells.Count
  16.             If Arr(1, i) > Arr(1, j) Then
  17.                 temp = Arr(1, i)
  18.                 Arr(1, i) = Arr(1, j)
  19.                 Arr(1, j) = temp
  20.             End If
  21.         Next
  22.         k = k + 1
  23.     Next
  24.     '计算连续数字个数
  25.     k = 0: j = 0
  26.     For i = 2 To UBound(Arr, 2)
  27.         If Arr(1, i) - Arr(1, i - 1) > 1 Then
  28.             j = 0
  29.         ElseIf Arr(1, i) - Arr(1, i - 1) = 1 Then
  30.             j = j + 1
  31.             If j > k Then k = j
  32.         End If
  33.     Next i
  34.     xqoa = IIf(k, k + 1, 0)
  35. End Function
按Alt+Q关闭VBE窗口,同时返回工作表界面,在I2单元格内输入以下公式后下拉至I9,完毕。
  1. =xqoa(A2:H2)
附件:
返回一行数字中连续数字个数的自定义函数.rar
2楼
开心二点
赞一个娃,不错,学习ing
3楼
遇知
不错
4楼
老糊涂
学习

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap