ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何返回数组内各元素的最大连续次数和对应出现最大连续的次数?

如何返回数组内各元素的最大连续次数和对应出现最大连续的次数?

作者:绿色风 分类: 时间:2022-08-17 浏览:127
楼主
liuguansky
Q:若有一数组arr=array(0,1,1,1,0,0,2,2,1,3,3,0,0,1,1,1,2,3,0,2),求0,1,2,3连续的最大值及个数代码。
结果为0的连续最大值为2,出现次数2次
            1的连续最大值为3,出现次数2次
            2的连续最大值为2,出现次数1次
            3的连续最大值为2,出现次数1次。
A:用如下代码可以实现:
  1. Sub JustTest()
  2.     Dim Arr, i&, k&, d, str, ar '定义变量
  3.     Set d = CreateObject("scripting.dictionary") '创建字典项目
  4.     Arr = Array(0, 1, 1, 1, 0, 0, 2, 2, 1, 3, 3, 0, 0, 1, 1, 1, 2, 3, 0, 2)
  5.     '待处理数组
  6.     k = 1
  7.     '初始化连续个数
  8.     For i = LBound(Arr) + 1 To UBound(Arr)
  9.         If Arr(i) = Arr(i - 1) Then '判断是否连续
  10.             k = k + 1 '连续则累加
  11.         Else '不连续:
  12.             If d.exists(Arr(i - 1)) Then '如果存在字典KEY
  13.                 ar = d(Arr(i - 1)) '获取ITEM
  14.                 If ar(0) = k Then '如果次数与本次相同
  15.                     ar(1) = ar(1) + 1 '则累加ITEM的个数标识
  16.                 ElseIf ar(0) < k Then '如果小于本次
  17.                     ar(0) = k: ar(1) = 1 '把本次的记录赋值,同时初始化个数标识
  18.                 End If
  19.                 d(Arr(i - 1)) = ar '数组赋值回ITEM
  20.             Else: d.Add Arr(i - 1), Array(k, 1) '如果不存在字典KEY,则添加字典KEY,item也初始化
  21.             End If
  22.             k = 1 '同时初始化连续个数
  23.         End If
  24.     Next
  25.     Arr = d.keys '获取字典KEY数组
  26.     For i = LBound(Arr) To UBound(Arr) '循环字典KEY
  27.         str = str & vbCrLf & i & "的连续最大值为" & d(i)(0) & ",出现次数为" & d(i)(1) & "次"
  28.         '返回待返回文本串
  29.     Next i
  30.     MsgBox "数组中的元素连续情况为:" & str
  31.     '消息框提示结果
  32.     Set d = Nothing
  33.     '释放字典对象
  34. End Sub
该帖已经同步到 liuguansky的微博
2楼
JOYARK1958
謝謝提供學習下載中

免责声明

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

评论列表
sitemap