Прескочи на основното съдържание

Как лесно да свържете текст въз основа на критерии в Excel?

Автор: Xiaoyang Последна промяна: 2021-01-06

Да предположим, че имам колона с идентификационни номера, която съдържа някои дубликати и колона с имена, и сега искам да свържа имената въз основа на уникалните идентификационни номера, както е показано на левия екран, за да комбинирам бързо текста въз основа на критерии, как бихме могли правя в 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. В тази стъпка трябва да създадете a Потребителска функция за да комбинирате имената въз основа на уникалните идентификационни номера, моля, задръжте натиснат ALT + F11 ключове и отваря Microsoft Visual Basic за приложения прозорец.

4. Щракнете Поставете > Модулии поставете следния код в Модули Window.

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. Щракнете Kutools > Обединяване и разделяне > Разширено комбиниране на редове, вижте екранна снимка:

3. В Комбинирайте редове въз основа на колона диалогов прозорец, щракнете върху колоната ID и след това щракнете върху Първичен ключ за да направите тази колона ключова колона, на която се основават вашите комбинирани данни, вижте екранна снимка:

doc комбинирайте текст въз основа на критерии 7

4, И после щракнете върху Име колона, която искате да комбинирате стойностите, след което щракнете Комбинирам опция и изберете един разделител за комбинираните данни, вижте екранната снимка:

doc комбинирайте текст въз основа на критерии 8

5. След като завършите тези настройки, щракнете OK за да излезете от диалоговия прозорец и данните в колона B са комбинирани заедно въз основа на ключовата колона A. Вижте екранна снимка:

doc комбинирайте текст въз основа на критерии 9

С тази функция следният проблем ще бъде разрешен възможно най-скоро:

Как да комбинирам няколко реда в един и да сумирам дубликати в Excel?

Изтеглете и изпробвайте безплатно Kutools за Excel сега!


Kutools за Excel: с повече от 300 удобни добавки за Excel, безплатни за изпробване без ограничение за 30 дни. Изтеглете и изпробвайте безплатно сега!

Най-добрите инструменти за продуктивност в офиса

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

Усъвършенствайте уменията си за 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