Excel 删除单个单元格中的重复项,嵌套VBA
我需要把多个vlookup值拉到一个单元格中。为此,我使用vba创建了一个名为Excel 删除单个单元格中的重复项,嵌套VBA,excel,vba,Excel,Vba,我需要把多个vlookup值拉到一个单元格中。为此,我使用vba创建了一个名为MULTIVLOOKUP的公共函数,它可以完美地工作,在单个单元格中生成以下值: Vendor, Site, ARO, ARO, ARO, Site 得到这个结果的公式是:=MULTIVLOOKUP($J9,$A$2:$A$5000,4) 然后,我使用stackoverflow上的代码删除重复。以下是用户KazJaw非常擅长提供的代码: Function UniqueFromCell(rngCell, splitSt
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
我失去了卖主
有什么建议吗?提前谢谢。线路:
For i = 1 To UBound(arrTMP)
这就是问题所在。Split返回的是基于零的数组,而不是基于一的数组。更安全的做法是编写类似LBound(arrTMP)
的代码,以正确处理这两种数组
For i = LBound(arrTMP) To UBound(arrTMP)
您可以阅读VBA中数组的工作原理。谢谢!工作得很好。