Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 返回与主数组中的值匹配的索引数组_Arrays_Excel_Vba - Fatal编程技术网

Arrays 返回与主数组中的值匹配的索引数组

Arrays 返回与主数组中的值匹配的索引数组,arrays,excel,vba,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").Va

我有一个有多个副本的数组。我试图编写代码,生成第二个数组,该数组包含第一个数组中所有元素的索引,这些元素等于查找值

例如,我有一个数组:

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

没有尝试过任何东西,我注意到了一些东西。Dim look_作为整数,后跟名为lookup而不是look的整数_up@Uvar哎呀,不知怎的,我把它抄过来的时候,一定是把它改了。变量名在我运行的代码中匹配。我编辑了这个问题来解决这个问题。谢谢。不是为了解决同样的问题,而是为了解决您的应用程序。Match还提到了
查找
,而不是
查找
。代码中的这一点也正确吗?@Busse是的,我的代码中的这一点是正确的。谢谢你也看到了。如果你需要一个数组输出。使用Brett页面中的代码。我有点担心使用循环,因为我希望代码能够快速执行。我不确定如果这个集合有100000个元素需要多长时间。但这可能是解决VBA问题的最佳方法。嗨,Jarom,请放心,采集数据结构是VBA工程中经过验证和可靠的一部分。我曾经对循环持怀疑态度,直到我意识到热路径是2个循环中心的阵列。热路径上的任何分配、重拨和保留都会使应用程序的运行时间越来越长。该集合缓解了这一问题,并可用于快速扩展。如果您了解如何使用集合,我衷心建议您完全废弃阵列。我没有意识到这一点。谢谢你的澄清。您提供的代码非常有效。基于您的rational,我认为我不会再为VBA使用数组了。