Объединить уникальные значения ячеек в одной строке

323
Ravi Bhesadadiya

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

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

enter image description here

0
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что вопросы должны демонстрировать разумное количество исследований и понимания решаемой проблемы. Пожалуйста, отредактируйте: а) четко опишите вашу проблему и исследования, проведенные до сих пор для ее решения, или б) включите попытки решения плюс почему они не сработали. В любом случае, убедитесь, что ваши ожидаемые результаты четко представлены. Tetsujin 5 лет назад 1
Возможный дубликат [объединить две строки в листе Excel, где одна ячейка имеет одинаковое содержимое, а другие ячейки имеют другое содержимое] (https://superuser.com/questions/629493/merge-two-rows-in-excel-worksheet-where- одна клетки-имеет-же-контент-но-другие сотни) Burgi 5 лет назад 1

3 ответа на вопрос

3
PeterH

В ячейке 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соответствии с диапазоном скольких столбцов вы можете использовать.

Woow, это работает, спасибо PeterH Но проблема в том, что у меня есть 7 входных столбцов, тогда какова будет окончательная формула? Ravi Bhesadadiya 5 лет назад 0
Смотрите обновление, чтобы ответить @RaviBhesadadiya, если это работает для вас, примите как правильный ответ PeterH 5 лет назад 0
Идеальное спасибо, вы мне очень помогли !! Ravi Bhesadadiya 5 лет назад 0
Хороший @PeterH, идеальный 10 ☺ Rajesh S 5 лет назад 0
2
Rajesh S

Этот простой 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,",")

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

Вы используете Late-Binding. Поэтому нет причин добавлять ссылку на среду выполнения сценариев Microsoft. Это потребуется только в том случае, если вы используете раннее связывание. Ron Rosenfeld 5 лет назад 0
@RonRosenfeld, в качестве меры предосторожности стоит добавить, что иногда я сталкиваюсь с ошибкой. СПАСИБО за ценные отзывы. ☺ Rajesh S 5 лет назад 0
1
Scott Craner

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

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

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

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

enter image description here

Похожие вопросы