Excel 删除单个单元格中的重复项,嵌套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

我需要把多个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

我失去了卖主

有什么建议吗?提前谢谢。

线路:

For i = 1 To UBound(arrTMP)
这就是问题所在。Split返回的是基于零的数组,而不是基于一的数组。更安全的做法是编写类似
LBound(arrTMP)
的代码,以正确处理这两种数组

For i = LBound(arrTMP) To UBound(arrTMP)

您可以阅读VBA中数组的工作原理。

谢谢!工作得很好。