作业帮 > 综合 > 作业

VBA统计两个数,三个数的次数

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/10 09:00:45
VBA统计两个数,三个数的次数
前面数字是磨具编号,小括号内是其损坏次数,现在通过自定义函数统计次数,Function FindTimesAAA(r,c,n)'r,c分别表示行号列号,n表示要找的次数,务必使用r,c表示,而不要使用 r As Range,因为要使用到多个具体单元格
如:989(78),567(32),371(28),041(28),900(28),439(17),560(17),283(9),666(9),433(9),187(1),374(1),055(1),485(1),233(1),309(0),394(0),127(0),218(0),409(0),
要求每个符合要求的要去括号和次数,保留逗号,比如:
FindTimesAAA(1,1,28)的结果和格式是 371,041,900,
FindTimesAAA(1,1,9)的结果和格式是 283,666,433,
FindTimesAAA(1,1,3)的结果和格式是
FindTimesAAA(1,1,1)的结果和格式是 187,374,055,485,233,
FindTimesAAA(1,1,0)的结果和格式是 309,394,127,218,409,
注意:
次数范围在0-99
每种符合要求的次数个数在0-999之间,比如2次的可能一个都没有,也可能1000个全部是2次的.
上面的是找三位数的,再编写一个找两位数次数的,如
89(78),67(32),37(28),04(28),39(28),56(17),28(9),09(0),
FindTimesBBB(1,1,28)的结果和格式是 37,04,39,
请直接Hi我,因为直接回答的有可能不显示.
不知道我理解的对不对,其实你要的一个3位数的函数一个2位数的函数可以合并成一个函数,只不过加一个参数就是了.
findtimesAAA(r,c,n,x)'r,c分别表示行号列号,n表示要找的次数,x统计的位数

Function findtimesAAA(R As Long, C As Long, n As Integer, x As Integer)
Dim arr, temparr, jgarr()
arr = Split(Cells(R, C).Value, ",")
For i = 0 To UBound(arr)
temparr = Split(arr(i), "(")
If Len(temparr(0)) = x Then
If Left(temparr(1), Len(temparr(1)) - 1) = n Then
y = y + 1
ReDim Preserve jgarr(1 To y)
jgarr(y) = temparr(0)
End If
End If
Next
findtimesAAA = Join(jgarr, ",")
End Function