Hoppa till huvudinnehåll

Hur sammanfogar man enkelt text baserat på kriterier i Excel?

Antag att jag har en kolumn med ID-nummer som innehåller några dubbletter och en kolumn med namn, och nu vill jag sammanfoga namnen baserat på de unika ID-numren som vänster skärmdump visas för att snabbt kombinera texten baserat på kriterier, hur skulle vi kunna gör i Excel?

doc kombinerar text baserat på kriterier 1

Sammankoppla text baserat på kriterier med användardefinierad funktion

Sammankoppla text baserat på kriterier med Kutools för Excel


För att kombinera text med unika ID-nummer kan du extrahera unika värden först och sedan skapa en användardefinierad funktion för att kombinera namnen baserat på det unika ID: t.

1. Ta följande data som exempel, du måste först extrahera de unika ID-numren, använd denna matrisformel: =IFERROR(INDEX($A$2:$A$15, MATCH(0,COUNTIF($D$1:D1, $A$2:$A$15), 0)),"")Skriv in denna formel i en tom cell, till exempel D2, och tryck sedan på Ctrl + Skift + Enter knappar tillsammans, se skärmdump:

doc kombinerar text baserat på kriterier 2

Tips: I ovanstående formel, A2: A15 är listdataområdet som du vill extrahera unika värden från, D1 är den första cellen i kolumnen du vill lägga ut extraheringsresultatet.

2. Och dra sedan ned fyllningshandtaget för att extrahera alla unika värden tills tomrummen visas, se skärmdump:

doc kombinerar text baserat på kriterier 3

3. I det här steget bör du skapa en Användardefinierad funktion För att kombinera namnen baserat på de unika ID-numren, håll ned ALT + F11 knapparna och det öppnar Microsoft Visual Basic för applikationer fönster.

4. Klicka Insert > Modulernaoch klistra in följande kod i Modulerna Fönster.

VBA-kod: sammanfoga text baserat på kriterier

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. Spara och stäng sedan den här koden, gå tillbaka till ditt kalkylblad och ange denna formel i cell E2, = CONCATENATEIF ($ A $ 2: $ A $ 15, D2, $ B $ 2: $ B $ 15, ",") , se skärmdump:

doc kombinerar text baserat på kriterier 4

6. Dra sedan fyllningshandtaget ner till cellerna som du vill använda denna formel, och alla motsvarande namn har kombinerats baserat på ID-numren, se skärmdump:

doc kombinerar text baserat på kriterier 5

Tips:

1. I ovanstående formel, A2: A15 är den ursprungliga informationen som du vill kombinera baserat på, D2 är det unika värde du har extraherat, och B2: B15 är namnskolumnen som du vill kombinera tillsammans.

2. Som du kan se, kombinerade jag de värden som är separerade med komma, du kan använda alla andra tecken genom att ändra kommatecken "," för formeln efter behov.


Om du har Kutools för Excel, med dess Avancerade kombinera rader verktyget kan du snabbt och bekvämt sammanfoga textbasen efter kriterier.

Kutools för Excel : med mer än 300 praktiska Excel-tillägg, gratis att prova utan begränsning på 30 dagar.

När du har installerat Kutools för Excel, gör så här:

1. Välj det dataintervall som du vill kombinera baserat på en kolumn.

2. Klicka Kutools > Slå ihop och dela > Avancerade kombinera rader, se skärmdump:

3. I Kombinera rader baserat på kolumn dialogrutan, klicka på ID-kolumnen och klicka sedan på Primärnyckel för att göra den här kolumnen som nyckelkolumnen som din kombinerade data baseras på, se skärmdump:

doc kombinerar text baserat på kriterier 7

4. Och klicka sedan på Namn kolumn där du vill kombinera värdena och klicka sedan på Kombinera alternativ och välj en separator för den kombinerade data, se skärmdump:

doc kombinerar text baserat på kriterier 8

5. När du har avslutat dessa inställningar klickar du på OK för att avsluta dialogen och data i kolumn B har kombinerats baserat på nyckelkolumnen A. Se skärmdump:

doc kombinerar text baserat på kriterier 9

Med den här funktionen kommer följande problem att lösas så snart som möjligt:

Hur kombinerar jag flera rader till en och summerar dubbletter i Excel?

Ladda ner och testa gratis Kutools för Excel nu!


Kutools för Excel: med mer än 300 praktiska Excel-tillägg, gratis att prova utan begränsning på 30 dagar. Ladda ner och testa gratis nu!

Bästa kontorsproduktivitetsverktyg

🤖 Kutools AI Aide: Revolutionera dataanalys baserat på: Intelligent utförande   |  Generera kod  |  Skapa anpassade formler  |  Analysera data och generera diagram  |  Anropa Kutools funktioner.
Populära funktioner: Hitta, markera eller identifiera dubbletter   |  Ta bort tomma rader   |  Kombinera kolumner eller celler utan att förlora data   |   Rund utan formel ...
Superuppslag: Flera kriterier VLookup    VLookup med flera värden  |   VSök över flera ark   |   Fuzzy Lookup ....
Avancerad rullgardinslista: Skapa snabbt en rullgardinslista   |  Beroende rullgardinslista   |  Flervals-rullgardinslista ....
Kolumnhanterare: Lägg till ett specifikt antal kolumner  |  Flytta kolumner  |  Växla synlighetsstatus för dolda kolumner  |  Jämför intervall och kolumner ...
Utvalda funktioner: Rutnätsfokus   |  Designvy   |   Stor formelbar    Arbetsbok & Bladhanterare   |  Resursbibliotek (Automatisk text)   |  Datumväljare   |  Kombinera arbetsblad   |  Kryptera/Dekryptera celler    Skicka e-postmeddelanden efter lista   |  Superfilter   |   Specialfilter (filtrera fet/kursiv/genomstruken...) ...
Topp 15 verktygssatser12 text verktyg (lägga till text, Ta bort tecken, ...)   |   50+ Diagram Typer (Gantt Chart, ...)   |   40+ Praktiskt Formler (Beräkna ålder baserat på födelsedag, ...)   |   19 Införande verktyg (Infoga QR-kod, Infoga bild från sökväg, ...)   |   12 Konvertering verktyg (Siffror till ord, Valutaväxling, ...)   |   7 Slå ihop och dela verktyg (Avancerade kombinera rader, Dela celler, ...)   |   ... och mer

Uppgradera dina Excel-färdigheter med Kutools för Excel och upplev effektivitet som aldrig förr. Kutools för Excel erbjuder över 300 avancerade funktioner för att öka produktiviteten och spara tid.  Klicka här för att få den funktion du behöver mest...

Beskrivning


Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
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