我的工作簿中有很多表格,我必须访问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))
感谢
何
答案 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