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

时间:2017-06-29 07:07:05

标签: arrays excel vba performance loops

我的工作簿中有很多表格,我必须访问hundresds。因此,我将它们转换为数组,我使用数组数据;更快。

假设数组

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

感谢

2 个答案:

答案 0 :(得分:0)

另一种方法是使用QuickSort对数组中的数据进行排序,并使用二进制搜索查找算法。根据数组的大小以及您希望在阵列上执行查找的次数,这可能会更快。或者您可以尝试使用词典或集合。

请参阅我的博客文章,了解这些方法的示例和比较。

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/

{ {3}}

答案 1 :(得分:0)

您的代码需要" 退出"

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