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/
你的代码需要“ 退出”
For i = 1 To 1000 If myArray(i, 1) = "XXX" Then myValue = myArray(i, 2) Exit For End If Next i