我的工作簿中有很多床单,我必须访问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