作者:绿色风
分类:
时间:2022-08-17
浏览:118
楼主 0Mouse |
Q:如何编写返回一行数字中连续数字个数的自定义函数呢? 如下图所示,希望在I2输入一个自定义函数,下拉后即可返回各行A~H列单元格内连续数字的个数。
注意:各行A~H列单元格内的数字可能是乱序,如D8:E8,也可能出现重复,如C9:D9、G9:H9。所编写的自定义函数必须不受数据乱序和重复的影响。 A:打开目标Excel文档,按<Alt+F11>组合键,依次单击“插入”-“模块”,在显示的空白窗口中录入以下代码:- Function xqoa(Rng As Range)
- '判断是否符合函数运算条件
- If Rng.Cells.Count = 1 Then
- xqoa = 0
- Exit Function
- ElseIf Rng.Rows.Count > 1 Then
- xqoa = "选区超过一行了"
- Exit Function
- End If
- '将所选区域内的数字按照从小到大排列
- Dim Arr, i&, j&, k&, temp
- Arr = Rng.Value
- k = 2
- For i = 1 To Rng.Cells.Count
- For j = k To Rng.Cells.Count
- If Arr(1, i) > Arr(1, j) Then
- temp = Arr(1, i)
- Arr(1, i) = Arr(1, j)
- Arr(1, j) = temp
- End If
- Next
- k = k + 1
- Next
- '计算连续数字个数
- k = 0: j = 0
- For i = 2 To UBound(Arr, 2)
- If Arr(1, i) - Arr(1, i - 1) > 1 Then
- j = 0
- ElseIf Arr(1, i) - Arr(1, i - 1) = 1 Then
- j = j + 1
- If j > k Then k = j
- End If
- Next i
- xqoa = IIf(k, k + 1, 0)
- End Function
按Alt+Q关闭VBE窗口,同时返回工作表界面,在I2单元格内输入以下公式后下拉至I9,完毕。- =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总版主之一