关于vba没有重复值数组

该代码示例展示了如何在VBA中使用Filter函数和RedimPreserve来去除一维数组的重复值。通过遍历数组,检查每个元素是否已存在于目标数组中,如果不存在则添加到目标数组。Filter函数在找不到匹配项时返回一个空数组,其长度为-1。这种方法未尝试应用于二维数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sub TEST()
'数组去重复值

Dim arr() As Variant

Dim Temp() As String

'利用array创建的数组默认值是从0开始的

Splarr = Array("A", "A", "B", "B", "C", "C", "C", "B", "A")

arr = Array("")

For i = LBound(Splarr) To UBound(Splarr)

'利用filter筛选arr,如果arr并不存在值,就会返回一个空的数组string(0 to -1)

    Temp = Filter(arr, Splarr(i))

'利用这个数组的最大值为-1,判断arr中是不是不存在这个splarr(i),假如不存在就进行添加操作    
    If UBound(Temp) = -1 Then
    'r默认值是0,那么先加1
        r = r + 1
    '重新定义arr,添加preserve是保留数组原先的值,同时延长数组
        ReDim Preserve arr(0 To r)
        'arr数组添加新元素splarr(i)
        arr(r) = Splarr(i)

    End If

Next
End Sub

这是针对一维数组的做法,至于二维数组,我还没去试过

同时也希望大家能告诉我一下,为什么filter找不到的时候是返回这个一个神奇的数组,我查不到原因

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值