2021-03-19

sub 代替字典的数组()

Dim arr() As Variant'先定义一个数组
If (ActiveSheet.FilterMode = True) Then ActiveSheet.ShowAllData '判断是不是处于筛选状态,是的话清除筛选
a = Sheet1.Range("B1048576").End(xlUp).Row '找到表格1,b列的最后一行的行数
ReDim Preserve arr(1 To 1) As Variant‘重新定义数组,并且保留之前的数组数据
n = 0'定义一个数字为0
For i = 2 To a'因为第一行是标题,从第二行开始

    '利用match公式在数组中查找新的数据是不是已经在数组里了,如果不在则返回#N/A,再利用IsNA公式判断是不是#N/A,是的话把对应的数据加入数组
    If WorksheetFunction.IsNA(Application.Match(Sheet3.Range("B" & i), arr, 0)) Then
       n = n + 1'当确定加入新的数据,我们把数组加长一位
       ReDim Preserve arr(1 To n) As Variant‘重新定义数组,并且保留之前的数组数据
       arr(n) = Sheet3.Range("B" & i).Value'数组的最后一位加入新的数据
    End If
Next

'preserve只能对最后一个维度生效,所以二维数组用这招不太行(大概我没去验证过),建议想要一个没有重复值的一维数组可以用

end sub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值