Excel 我有一个vba代码,可以在一个单元格中返回多个匹配项,但是执行起来需要很长时间。有没有办法加速宏
每次阅读某个范围都会降低性能,因此需要尽量减少阅读次数。一种方法是首先将数据读入数组,然后使用这些数组Excel 我有一个vba代码,可以在一个单元格中返回多个匹配项,但是执行起来需要很长时间。有没有办法加速宏,excel,vba,Excel,Vba,每次阅读某个范围都会降低性能,因此需要尽量减少阅读次数。一种方法是首先将数据读入数组,然后使用这些数组 选项显式 函数VLOOKUP1(lookupval、lookuprange作为范围、indexcol作为长度) Dim r为长、arr、arr2、sep为字符串、结果为字符串 arr=lookuprange.Value'读取数组的范围 arr2=lookuprange.Offset(0,indexcol-1).Value '循环查找列值 对于r=1至UBound(arr,1) 如果arr(r,
选项显式
函数VLOOKUP1(lookupval、lookuprange作为范围、indexcol作为长度)
Dim r为长、arr、arr2、sep为字符串、结果为字符串
arr=lookuprange.Value'读取数组的范围
arr2=lookuprange.Offset(0,indexcol-1).Value
'循环查找列值
对于r=1至UBound(arr,1)
如果arr(r,1)=lookupval,则
结果=结果、sep和arr2(r、1)
sep=“,”在第一个值后添加分隔符
如果结束
下一个r
VLOOKUP1=结果
端函数
indexcol在函数中不会更改,因此将其从循环中删除,并在For Each之前进行计算,然后在循环中使用已计算的变量。范围的大小是多少lookuprange
?@TimWilliams-MIS数据(数据库)大约有70000行50列,大约有35000个值(主表)要在数据库中进行哪些搜索,并在主表单中更新结果?我发布的代码是否更快?有了这么多数据,您最好使用sub来执行匹配,或者使用某种字典查找。
Option Explicit
Function VLOOKUP1(lookupval, lookuprange As Range, indexcol As Long)
Dim r As Range
Dim result As String
result = vbNullString
For Each r In lookuprange
If r = lookupval Then
result = result & " , " & r.Offset(0, indexcol - 1)
End If
Next r
VLOOKUP1 = result
End Function