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



我的工作簿中有很多床单,我必须访问hundersds。因此,我将它们转换为数组,然后使用数组数据;更快。

Asuming Array

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在数组中对数据进行排序,并使用二进制搜索查找算法。根据阵列的大小以及您想在数组上查找的次数,这可能会更快。或者您可以尝试使用词典或集合。

有关这些方法的示例和比较,请参见我的博客文章。


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

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




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

您的代码需要" 退出"

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

最新更新