前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VB6,VBA数组去重复项函数(2个一个单去重,一个去重含自身)

VB6,VBA数组去重复项函数(2个一个单去重,一个去重含自身)

作者头像
一线编程
发布2019-07-22 15:10:28
5.3K0
发布2019-07-22 15:10:28
举报
文章被收录于专栏:办公魔盒办公魔盒

VBA/VB6移除数组中重复的数据

需要引用 'Microsoft Scripting Runtime'

代码语言:javascript
复制


Function ArrDelAsMe(ByVal arr As Variant) As Variant  ''数组去重复项包括重复项自身

                                                      ' 这个函数是移除数组中重复的数据,包括自身
                                                      ' 列如数组  Array(1,2,2,3,4,5,5,5,6)   将变成   Array(1,3,4,6)
                                                      ' 需要引用 'Microsoft Scripting Runtime',用于调用字典对象

      On Error GoTo Err                               '错误跳转
       
      Dim i         As Long                           '定义数组下标
      Dim val       As Variant                        '定义数组值变量
      Dim brr()     As Variant                        '定义用于保存重复值的数组
      Dim dic       As New Scripting.Dictionary       '定义字典,通过字典唯一值,唯一值

      i = LBound(arr)                                 '获得数组下标
      
      For Each val In arr                             '数组循环取值
            If Not dic.Exists(val) Then               '如果字典不存在加往字典里装数据
                  dic.Add val, val                    '把数据装进字典
            Else                                      '否则就是重复的数装入数据brr
                  ReDim Preserve brr(i)               '设置brr数组为动态数据
                  brr(i) = dic.Item(val)              '把重复的数装入动态数组
                  i = i + 1                           '叠加量
            End If                                    '结束如果
      Next                                            '迭代

      For Each val In brr                             '循环迭代brr数组取值
            If dic.Exists(val) Then                   '如果存在就把相同的数据一起去除
                dic.Remove (val)                      '删除字典中重复的数据
            End If                                    '结束如果
      Next                                            '迭代

EF:
      ArrDelAsMe = dic.Keys                           '输出去除重复数据的数据

      Erase brr                                       '清空brr数组
      Set dic = Nothing                               '清空字典
      Exit Function                                   '退出方法
Err:                                                  '错误提示

    MsgBox "发生未知错误", vbCritical, "vb小源码"

End Function



Function ArrDel(ByVal arr As Variant) As Variant      ''数组去重复项

                                                      ' 这个函数是移除数组中重复的数据
                                                      ' 列如数组  Array(1,2,2,3,4,5,5,5,6)   将变成   Array(1,2,3,4,5,6)
                                                      ' 需要引用 'Microsoft Scripting Runtime',用于调用字典对象

      On Error GoTo Err                               '错误跳转
       
      Dim i         As Long                           '定义数组下标
      Dim val       As Variant                        '定义数组值变量
      Dim dic       As New Scripting.Dictionary       '定义字典,通过字典唯一值,唯一值

      i = LBound(arr)                                 '获得数组下标
      
      For Each val In arr                             '数组循环取值
            If Not dic.Exists(val) Then               '如果字典不存在加往字典里装数据
                  dic.Add val, val                    '把数据装进字典
            End If                                    '结束如果
      Next                                            '迭代

EF:
      ArrDel = dic.Keys                               '输出去除重复数据的数据

      Set dic = Nothing                               '清空字典
      Exit Function                                   '退出方法
Err:                                                  '错误提示

    MsgBox "发生未知错误", vbCritical, "vb小源码"

End Function




Sub showme() '示例示范

    Dim arr, brr, tmp, crr, temp
    
    arr = Array(1, 2, 2, 3, 4, 5, 5, 5, 6)
    
    brr = ArrDel(arr)
    
    crr = ArrDelAsMe(arr)
    
    For i = 0 To UBound(brr)
    
        tmp = tmp & brr(i) & vbCrLf
    
    Next
    
    For j = 0 To UBound(crr)
    
        temp = temp & crr(j) & vbCrLf
    
    Next
    
    MsgBox "原数据:Array(1, 2, 2, 3, 4, 5, 5, 5, 6)" & vbCrLf & vbCrLf & "数组去重复项(不含自身):" & vbCrLf & tmp & vbCrLf & vbCrLf & "数组去重复项(含自身):" & vbCrLf & temp, , "VB小源码"

End Sub
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 办公魔盒 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档