去除单个单元中的Dupes,嵌套的VBA

我需要拉多个vlookup值到一个单元格。 为此,我使用vba创build了一个名为MULTIVLOOKUP的公共函数,它可以在单个单元格中完美地生成以下值:

 Vendor, Site, ARO, ARO, ARO, Site 

得到这个的公式是: =MULTIVLOOKUP($J9, $A$2:$A$5000, 4)

然后我用在这里find的代码在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

我失去了供应商!

有什么build议么? 先谢谢你。

该行:

 For i = 1 To UBound(arrTMP) 

是问题。 Split正在返回一个从零开始的数组,而不是一个基于数组的数组。 写一些类似LBound(arrTMP)东西比较安全,以便正确处理这两种数组。

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

你可以在这里了解VBA如何在VBA中工作。