返回一个索引数组,用于匹配主数组中的值

时间:2017-07-07 13:28:44

标签: arrays excel vba

我有一个包含多个重复项的数组。我正在尝试编写代码,生成第二个数组,其中包含第一个数组中与查找值相等的所有元素的索引。

例如,我有这个数组:

1
1
1
2
2
2
2
2
3
3
4
5
6
6
7

我想要第二个数组,它将返回数字6的索引。

这是我现在的代码。

Sub test()
Dim look_up As Integer
Dim id_ar As Variant
Dim index_ar As Variant


look_up = 6
id_ar = Range("A1:A16").Value
index_ar = Application.Match(id_ar, look_up, True)

End Sub

我希望这会产生如下数组:

13
14

但它只会返回一堆'#N / A's

1 个答案:

答案 0 :(得分:1)

一些非常简单的代码可能比简明扼要的方法更能帮助您。

说明:arrOut是您想要的输出,rngLookup是您的号码6和其他任何人所在的位置。您想在rngDB中搜索查找值的索引。

Option Explicit

Sub dupes()
Dim rngLookup, rngDB As Range
Dim i, j As Variant
Dim arrOut As New Collection

Set rngLookup = Worksheets("Sheet1").Range("B1")
Set rngDB = Worksheets("Sheet1").Range("A1:A14")


Dim counter As Integer
counter = 0

For Each i In rngLookup

    For Each j In rngDB
        counter = counter + 1
        If j.Value = i.Value Then
            arrOut.Add Item:=CInt(counter)
        Else
        End If
    Next j
Next i

End Sub