VBA连接索引/匹配以返回多个值

时间:2017-08-10 08:18:59

标签: excel vba excel-vba

代码是用户定义的函数,可以在工作表中使用。该函数有三个参数:

=MatchConcat(X1,X2,X3)

X1 =您要匹配的值

X2 =您想要匹配的值列,以及

X3 =如果匹配则要返回的值列。

它返回匹配值的逗号分隔字符串。

现在,我担心的是......我实际上正在寻找一种替代方案,并且更好(执行速度更快)VBA功能与下面相同。目前,下面的这个VBA函数对我的大量数据非常有帮助。不幸的是,使用这个功能到数千行甚至数百行需要这么长时间才能加载。花了5到10分钟(少于1000行)。我已经关闭了自动公式计算,但仍然遇到了同样的问题。

Function MatchConcat(LookupValue, LookupRange As Range, ValueRange As Range)
Dim lookArr()
Dim valArr()
Dim i As Long
lookArr = LookupRange
valArr = ValueRange
For i = 1 To UBound(lookArr)
    If Len(lookArr(i, 1)) <> 0 Then
        If lookArr(i, 1) = LookupValue Then
            MatchConcat = MatchConcat & ", " & valArr(i, 1)
        End If
    End If
Next
MatchConcat = Mid(MatchConcat, 3, Len(MatchConcat) - 1)

End Function

0 个答案:

没有答案