我需要将多个vlookup值拉入单个单元格。为此,我使用vba创建了一个名为MULTIVLOOKUP
的公共函数,它完美地工作,在单个单元格中产生以下值:
Vendor, Site, ARO, ARO, ARO, Site
获得这个的公式是:=MULTIVLOOKUP($J9, $A$2:$A$5000, 4)
然后我使用stackoverflow上的代码来删除欺骗。以下是用户KazJaw提供的代码:
Function UniqueFromCell(rngCell, splitString)
Dim myCol As New Collection
Dim itmCol
Dim i As Long
Dim arrTMP As Variant
arrTMP = Split(rngCell, splitString)
For i = 1 To UBound(arrTMP)
On Error Resume Next
myCol.Add arrTMP(i), CStr(arrTMP(i))
On Error GoTo 0
Next i
Dim result
For Each itmCol In myCol
result = result & itmCol & splitString
Next
UniqueFromCell = Left(result, Len(result) - Len(splitString))
End Function
我得到的公式变为:
=UNIQUEFROMCELL(MULTIVLOOKUP($J9, $A$2:$A$5000, 4), ",").
除了我的结果是:Site, ARO
我失去了供应商!
有什么建议吗?提前谢谢。
答案 0 :(得分:2)
该行:
For i = 1 To UBound(arrTMP)
是问题所在。 Split返回一个从零开始的数组而不是一个基于数组的数组。编写类似LBound(arrTMP)
之类的内容更安全,可以正确处理这两种数组。
For i = LBound(arrTMP) To UBound(arrTMP)
您可以了解数组在VBA here中的工作方式。