我尝试从 AC 列中获取一个值(唯一 ID),在 B 列中进行查找并返回(即连接)多个独特的将相邻列 (C) 中的值复制到 AD 列中的单个单元格。我只想返回唯一值,消除重复项,并将所有结果返回到单个单元格中,以逗号分隔。请参见下面的示例。需要查找大约 800 个唯一 ID 和大约 5000 行数据。我愿意接受公式、数组或 VBA 解决方案。谢谢。
Source Data:
Column B Column C .... Column AC (unique ID)
DEF 111 ABC
DEF 222 DEF
DEF 111 GHI
ABC 444 JKL
DEF 333
DEF 111
ABC 444
ABC 555
JKL 666
JKL 666
GHI 777
GHI 888
ABC 555
Desired Output:
Column B Column C .... Column AC Column AD (unique values comma separated)
DEF 111 ABC 444,555
DEF 222 DEF 111,222,333
DEF 111 GHI 777,888
DEF 333 JKL 666,999
DEF 111
ABC 444
ABC 555
JKL 666
JKL 666
JKL 999
GHI 777
GHI 888
ABC 555
答案1
我将为此使用 Excel UDF(用户定义函数)。
像这样设置:
Public Function mylookup(inputrange As Range, match As Range) As String
Dim arr() As Variant
Dim d As Object
Dim result As String
Dim i As Integer
Dim v As Variant
Set d = CreateObject("Scripting.Dictionary")
arr() = inputrange.Value
For i = 1 To UBound(arr)
If arr(i, 1) = match Then
d(arr(i, 2)) = 1
End If
Next i
For Each v In d.Keys()
result = result & v & ","
Next v
result = Left(result, Len(result) - 1)
mylookup = result
End Function
从那里开始,就像使用公式一样使用它。第一个参数是完整的值列表,第二个参数是您想要查找的特定值。
=mylookup(B1:B90,AC1)
编辑:我错过了您最初的一个要求,即过滤掉重复值。我添加了一个字典对象来执行此操作。