Я пытаюсь взять значение (уникальный идентификатор) из столбца AC, выполнить поиск в столбце (B) и вернуть (то есть объединить) несколько уникальных значений из соседнего столбца (C) в одну ячейку в столбце AD. Я только хочу вернуть уникальные значения, исключив дубликаты, и чтобы все результаты возвращались в одной ячейке, разделенных запятой. Пожалуйста, смотрите пример ниже. Существует около 800 уникальных идентификаторов для поиска и около 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 ответ1

0

Я бы использовал 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)

РЕДАКТИРОВАТЬ: я пропустил одно из ваших первоначальных требований, чтобы отфильтровать повторяющиеся значения. Я добавил объект словаря, чтобы сделать это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .