Смотрите ниже изображение моих 3 входов (столбцы A:C) и ожидаемого выхода (столбец D),

Я хотел бы перечислить уникальные значения для каждой строки в качестве вывода, разделенных запятой.

3 ответа3

3

В ячейке D1 используйте:

=TRIM(A1&IF(COUNTIF(A1:C1,B1)>1,"",","&B1)&IF(COUNTIF(A1:C1,C1)>1,"",","&C1))

Затем перетащите вниз.

Если у вас есть больше столбцов, добавьте &IF(COUNTIF(A1:C1,C1)>1,"",","&C1) измените C1 на D1 для четвертого столбца и на E1 для пятого и т.д.

Также измените A1:C1 в COUNTIF для соответствия диапазону количества столбцов, которые вы можете использовать.

2

Этот простой UDF поможет вам объединить уникальные значения в ячейке, разделенной запятой.

  • Вставьте этот код как модуль с соответствующим листом.

    Function CombineUnique(xRg As Range, xChar As String) As String
    
    Dim xCell As Range
    Dim xDic As Object
    Set xDic = CreateObject("Scripting.Dictionary")
    For Each xCell In xRg
        xDic(xCell.Value) = Empty
    Next
    CombineUnique = Join$(xDic.Keys, xChar)
    Set xDic = Nothing
    End Function  
    

Как это устроено:

  • Перед запуском этого UNF Добавьте Microsoft Scripting Runtime, используя Инструменты, Ссылки в окне VB Editor.
  • Чтобы получить желаемый результат, в ячейке D2 напишите ниже
    Формула написана и заполнена.

    =CombineUnique(A2:C2,",")

Обратите внимание, при необходимости измените ссылки на ячейки в формуле.

1

Если у вас Office 365 Excel, вы можете использовать TEXTJOIN в качестве формулы массива:

=TEXTJOIN(",",TRUE,IF(COLUMN(A2:C2)=MATCH(A2:C2,A2:C2,0),A2:C2,""))

Будучи формулой массива, она должна быть подтверждена Ctrl-Shift-Enter вместо Enter при выходе из режима редактирования.

Это повторяет и проверяет, является ли экземпляр первым, и если это так, он добавит его в строку.

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