去除单个单元中的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中工作。