excel快速访问一个二维数组避免循环?

我在工作簿中有很多工作表,我必须访问时间。 因此,我将它们转换为数组,并使用数组数据; 快多了。

假设一个数组

dim myArray(1 to 1000, 1 to 2) 

如果根据第1列在第2列中查找值,则直接使用循环

 for i=1 to 1000 if myArray(i,1)="XXX" then myValue=myArray(i,2) next i 

因为我做了数百次,我不知道是否有像二维数组的查找函数或类似的东西:

 myvalue=function(myarray(1)="XXX",myarray(2)) 

谢谢

何塞

另一种方法是使用QuickSort对数组中的数据进行sorting,并使用二进制search查找algorithm。 根据你的数组的大小和你想在数组上查找的次数,这可能会更快。 或者你可以尝试使用字典或集合。

看我的博客文章的例子和这些方法的比较。

https://fastexcel.wordpress.com/2011/08/02/developing-faster-lookups-part-3-a-binary-search-udf/

https://fastexcel.wordpress.com/2011/10/26/match-vs-find-vs-variant-array-vba-performance-shootout/

https://fastexcel.wordpress.com/2012/07/10/comparing-two-lists-vba-udf-shootout-between-linear-search-binary-search-collection-and-dictionary/

你的代码需要“ 退出”

 For i = 1 To 1000 If myArray(i, 1) = "XXX" Then myValue = myArray(i, 2) Exit For End If Next i