Функция сопоставления Excel

На моем листе два столбца: Column A и Column B.

Column A имеет список имен, а Column B имеет соответствующие значения.

Некоторые элементы в списке (Column A) имеют дубликаты с разными значениями в Column B.

Я пытаюсь удалить дубликаты в Column A и оставить только по одному из них со всеми соответствующими значениями в одной ячейке.

Пример:

Colmn A      Column B                     Column A      Column B
Apple           7                         Apple            7, 1
Orange          2         will be         Orange           2   
Apple           1

Я использую формулу ниже, но она дает #NAME? ошибку:

=IF(MATCH(A2,A:A,0), contenate(B:B))

Может кто-нибудь подскажет, что я делаю не так?


person user3490456    schedule 26.10.2017    source источник
comment
Формула @musefan здесь допустима в качестве кода.   -  person Scott Craner    schedule 26.10.2017
comment
@ user3490456 Match возвращает только первое найденное значение и выдаст ошибку, если оно не найдено. Если вы хотите, чтобы это было на месте, вам понадобится vba. Если вы хотите создать уникальный список в другом столбце, используя копирование / вставку / удаление дубликатов, вы можете использовать TEXTJOIN, если у вас есть OFFICE 365 Excel. В противном случае также потребуется vba.   -  person Scott Craner    schedule 26.10.2017
comment
@ user3490456 Чтобы получить результат, вам понадобится 3-й столбец или VBA imo.   -  person krib    schedule 26.10.2017
comment
Что касается того, почему вы получаете ошибку NAME, contenate(B:B) должно быть CONCATENATE(B:B) Но, как я уже сказал, это не сработает. Если ПОИСКПОЗ не выдаст ошибку, он вернет конкатенацию всего столбца B, а не только тех, столбец A которых соответствует A2.   -  person Scott Craner    schedule 26.10.2017


Ответы (1)


Этот короткий макрос помещает результаты в столбцы D и E:

Sub Macro1()
    Dim M As Long, N As Long, rc As Long
    Dim i As Long, j As Long, v As String
    rc = Rows.Count

    Columns("A:A").Copy Columns("D:D")
    Range("D:D").RemoveDuplicates Columns:=1, Header:=xlNo
    M = Cells(rc, 1).End(xlUp).Row
    N = Cells(rc, 4).End(xlUp).Row

    For i = 1 To N
        v = Cells(i, 4)
        For j = 1 To M
            If Cells(j, 1) = v Then
                If Cells(i, 5) = "" Then
                   Cells(i, 5) = Cells(j, 2)
                Else
                    Cells(i, 5) = Cells(i, 5) & "," & Cells(j, 2)
                End If
            End If
        Next j
        Next i

End Sub

Например:

введите описание изображения здесь

person Gary's Student    schedule 26.10.2017