Перейти до основного матеріалу

Як легко об’єднати текст на основі критеріїв у Excel?

Припустимо, у мене є стовпець ідентифікаційних номерів, який містить кілька дублікатів та стовпець імен, і тепер я хочу об'єднати імена на основі унікальних ідентифікаційних номерів, як показано на лівому скріншоті, щоб швидко поєднати текст на основі критеріїв, як ми могли б робити в Excel?

doc поєднує текст на основі критеріїв 1

Об’єднати текст на основі критеріїв за допомогою функції, визначеної користувачем

Об’єднайте текст на основі критеріїв за допомогою Kutools для Excel


Щоб поєднати текст з унікальними ідентифікаційними номерами, ви можете спочатку витягти унікальні значення, а потім створити визначену користувачем функцію для поєднання імен на основі унікального ідентифікатора.

1. Візьмемо такі дані, як приклад, вам потрібно спочатку витягти унікальні ідентифікаційні номери, застосуйте цю формулу масиву: =IFERROR(INDEX($A$2:$A$15, MATCH(0,COUNTIF($D$1:D1, $A$2:$A$15), 0)),""), Введіть цю формулу в порожню комірку, наприклад D2, а потім натисніть Ctrl + Shift + Enter клавіші разом, див. знімок екрана:

doc поєднує текст на основі критеріїв 2

Чайові: У наведеній вище формулі, A2: A15 - діапазон даних списку, з якого ви хочете витягти унікальні значення, D1 - це перша клітинка стовпця, для якої потрібно вивести результат вилучення.

2. А потім перетягніть маркер заповнення вниз, щоб витягти всі унікальні значення, поки не відображатимуться пробіли, див. Знімок екрана:

doc поєднує текст на основі критеріїв 3

3. На цьому кроці вам слід створити файл Визначена користувачем функція щоб поєднати імена на основі унікальних ідентифікаційних номерів, натисніть і утримуйте ALT + F11 і відкриває Microsoft Visual Basic для додатків вікна.

4. Клацання Insert > Модуліта вставте наступний код у Модулі Вікно

Код VBA: об'єднання тексту на основі критеріїв

Function ConcatenateIf(CriteriaRange As Range, Condition As Variant, ConcatenateRange As Range, Optional Separator As String = ",") As Variant
'Updateby Extendoffice
Dim xResult As String
On Error Resume Next
If CriteriaRange.Count <> ConcatenateRange.Count Then
    ConcatenateIf = CVErr(xlErrRef)
    Exit Function
End If
For i = 1 To CriteriaRange.Count
    If CriteriaRange.Cells(i).Value = Condition Then
        xResult = xResult & Separator & ConcatenateRange.Cells(i).Value
    End If
Next i
If xResult <> "" Then
    xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
End If
ConcatenateIf = xResult
Exit Function
End Function

5. Потім збережіть і закрийте цей код, поверніться до робочого аркуша та введіть цю формулу в клітинку E2, = CONCATENATEIF ($ A $ 2: $ A $ 15, D2, $ B $ 2: $ B $ 15, ",") , див. скріншот:

doc поєднує текст на основі критеріїв 4

6. Потім перетягніть маркер заповнення до комірок, до яких ви хочете застосувати цю формулу, і всі відповідні імена були об’єднані на основі ідентифікаційних номерів, див. Знімок екрана:

doc поєднує текст на основі критеріїв 5

Порада:

1. У наведеній вище формулі A2: A15 це вихідні дані, на основі яких ви хочете об’єднати, D2 - унікальне значення, яке ви отримали, та B2: B15 - це стовпець імен, який потрібно об’єднати.

2. Як бачите, я об’єднав значення, розділені комами, ви можете використовувати будь-які інші символи, змінюючи кому “,” формули, як вам потрібно.


Якщо у вас є Kutools для Excel, З його Розширені комбіновані ряди утиліта, ви можете швидко та зручно об'єднати текстову базу за критеріями.

Kutools для Excel : з більш ніж 300 зручними надбудовами Excel, які можна спробувати без обмежень протягом 30 днів.

після установки Kutools для Excel, виконайте такі дії:

1. Виберіть діапазон даних, який потрібно об’єднати, виходячи з одного стовпця.

2. Клацання Кутулс > Злиття та розділення > Розширені комбіновані ряди, див. скріншот:

3, в Об'єднати рядки на основі стовпця у діалоговому вікні клацніть стовпець ID, а потім натисніть Первинний ключ щоб зробити цей стовпець ключовим стовпцем, на якому базуються ваші об’єднані дані, див. знімок екрана:

doc поєднує текст на основі критеріїв 7

4. А потім клацніть ІМ'Я стовпець, який потрібно об'єднати, а потім клацніть Поєднувати і виберіть один роздільник для об’єднаних даних, див. знімок екрана:

doc поєднує текст на основі критеріїв 8

5. Після закінчення цих налаштувань натисніть OK для виходу з діалогового вікна, а дані у стовпці B об’єднані разом на основі ключового стовпця A. Дивіться знімок екрана:

doc поєднує текст на основі критеріїв 9

За допомогою цієї функції наступна проблема буде вирішена якомога швидше:

Як об'єднати кілька рядків в один і підсумувати дублікати в Excel?

Завантажте та безкоштовну пробну версію Kutools для Excel зараз!


Kutools для Excel: з більш ніж 300 зручними надбудовами Excel, спробуйте безкоштовно без обмежень протягом 30 днів. Завантажте та безкоштовно пробну версію зараз!

Найкращі інструменти продуктивності офісу

🤖 Kutools AI Aide: Революціонізуйте аналіз даних на основі: Інтелектуальне виконання   |  Згенерувати код  |  Створення спеціальних формул  |  Аналізуйте дані та створюйте діаграми  |  Викликати функції Kutools...
Популярні функції: Знайдіть, виділіть або визначте дублікати   |  Видалити порожні рядки   |  Об’єднайте стовпці або клітинки без втрати даних   |   Раунд без Формули ...
Супер пошук: VLookup за кількома критеріями    Багатозначний VLookup  |   VLookup на кількох аркушах   |   Нечіткий пошук ....
Розширений розкривний список: Швидке створення випадаючого списку   |  Залежний спадний список   |  Виберіть розкривний список, що вибирається ....
Менеджер колонок: Додайте конкретну кількість стовпців  |  Перемістити стовпці  |  Перемкнути статус видимості прихованих стовпців  |  Порівняйте діапазони та стовпці ...
Особливості: Фокус сітки   |  Перегляд дизайну   |   Велика панель формул    Диспетчер робочих книг і аркушів   |  Бібліотека ресурсів (автотекст)   |  Вибір дати   |  Об’єднайте робочі аркуші   |  Шифрування/розшифрування клітинок    Надсилайте листи за списком   |  Супер фільтр   |   Спеціальний фільтр (фільтр жирний/курсив/закреслений...) ...
Топ-15 наборів інструментів12 текст Tools (додати текст, Видалити символи, ...)   |   50 + Графік типи (діаграма Ганта, ...)   |   40+ Практичний Формули (Розрахуйте вік на основі дня народження, ...)   |   19 вставка Tools (Вставте QR-код, Вставити зображення зі шляху, ...)   |   12 Перетворення Tools (Числа до слів, Валютна конверсія, ...)   |   7 Злиття та розділення Tools (Розширені комбіновані ряди, Розділені клітини, ...)   |   ... і більше

Покращуйте свої навички Excel за допомогою Kutools для Excel і відчуйте ефективність, як ніколи раніше. Kutools для Excel пропонує понад 300 додаткових функцій для підвищення продуктивності та економії часу.  Натисніть тут, щоб отримати функцію, яка вам найбільше потрібна...

Опис


Вкладка Office Передає інтерфейс із вкладками в Office і значно полегшує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
Comments (38)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Great function! Is there a way to maintain the format in the cell it's concatenating data from? i.e. $45.07, $555.34, $0.00, $0.25, -$12.25 I've figured out how to stack them with wrap text and CHAR(10) in place of "," but having trouble keeping the format. I will be using this for a mail merge in Word.
This comment was minimized by the moderator on the site
Hello, Laurie,If you want to keep the cell formatting when concatenating the data, you can apply the Advanced Combine Rows feature of Kutools for Excel, in the dialog box, after finishing the settings, you just need to check Use formatted values option, and all the data formatting will be kept as you need.
You can download Kutools for Excel and free trial 30-day.
This comment was minimized by the moderator on the site
Is there any way to add "and" instead of "," before the last data? (For example: D2355, D2273, D2397, D2600 and D2386)
This comment was minimized by the moderator on the site
Hi, Hossain,May be there is not a direct method for solving your problem, you can add another formula to convert the last comma to the text "and".=SUBSTITUTE(E2,","," and ",LEN(E2)-LEN(SUBSTITUTE(E2,",","")))
Please try, thank you!
This comment was minimized by the moderator on the site
It worked like a charm sir. Thank you so much.
This comment was minimized by the moderator on the site
Great function, exactly what I needed! Works like a charm
This comment was minimized by the moderator on the site
Hi,

Very helpful VBA solution. Thank you kindly! My question is: Is there a way to change the code or function for multiple criteria? Although the code works for me, I need it to show values corresponding to a timestamp-interval (>= timestamp A, <= timestamp B)


Thank you in advance. :)
This comment was minimized by the moderator on the site
Is there a way to assign this to a button? On large data ranges it takes a while, so ideally I only want it to start the concatenate process once I've finished doing everything else in the sheet. I tried adding a trigger myself but it stopped working completely
This comment was minimized by the moderator on the site
BTW i used the VBA solution
This comment was minimized by the moderator on the site
Extremely helpfull! After editing it for my sheet i have #VALUE! for some of the unique values.
I did a countif to see if it could be that there are too many names to concatenate. The two unique values that have the #VALUE! error have 13635 and 19810 results. Is there a way to overcome this?
This comment was minimized by the moderator on the site
How can I ignore blank cells? mine currently displays this:

";;;;;;;;;"

I'd like for the 1st, 3rd and last 3 semi colons not to there/show. TIA
This comment was minimized by the moderator on the site
Hello, Chantelle
When concatenating the cell values ignoring the blank cells, please apply the below User Defined Function:

Function ConcatenateIf(CriteriaRange As Range, Condition As Variant, ConcatenateRange As Range, Optional Separator As String = ",") As Variant
Dim xResult As String
On Error Resume Next
If CriteriaRange.Count <> ConcatenateRange.Count Then
ConcatenateIf = CVErr(xlErrRef)
Exit Function
End If
For i = 1 To CriteriaRange.Count
If CriteriaRange.Cells(i).Value = Condition Then
If ConcatenateRange.Cells(i).Value <> "" Then
xResult = xResult & Separator & ConcatenateRange.Cells(i).Value
End If
End If
Next i
If xResult <> "" Then
xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
End If
ConcatenateIf = xResult
Exit Function
End Function

Please try it, hope it can help you!
This comment was minimized by the moderator on the site
thank you very much! This was so simple and helped a lot!!
This comment was minimized by the moderator on the site
Is it possible to replace the comma splitter with a line break, i.e. char(10)? Many thanks.
This comment was minimized by the moderator on the site
Hello, David,

To combine the cells with line break, the following User Defined Function may help you.

Function ConcatenateIf_LineBreak(CriteriaRange As Range, Condition As Variant, ConcatenateRange As Range, Optional Separator As String = ",") As Variant
Dim xResult As String
On Error Resume Next
If CriteriaRange.Count <> ConcatenateRange.Count Then
ConcatenateIf = CVErr(xlErrRef)
Exit Function
End If
For I = 1 To CriteriaRange.Count
If CriteriaRange.Cells(I).Value = Condition Then
xResult = xResult & vbCrLf & ConcatenateRange.Cells(I).Value
End If
Next I
If xResult <> "" Then
xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
End If
ConcatenateIf_LineBreak = xResult
Exit Function
End Function

After pasting this code, then apply this formula: =ConcatenateIf_LineBreak(A2:A13,F2,B2:B13,",").

After getting the results with this formula, you should click the Wrap Text to get the correct results you need.
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations