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



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

例如,我有这个数组:

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">

一些非常简单的代码可能比简短的方法更能帮助你。

定义 : 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

最新更新