0

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

我失去了供应商!

有什么建议么?先感谢您。

4

1 回答 1

2

该行:

For i = 1 To UBound(arrTMP)

是问题。拆分返回一个从零开始的数组,而不是一个从一开始的数组。相反,编写类似的东西LBound(arrTMP)来正确处理这两种数组会更安全。

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

您可以在此处阅读有关数组如何在 VBA 中工作的信息。

于 2013-09-18T16:17:17.483 回答