Przejdź do głównej zawartości

Jak łatwo łączyć tekst na podstawie kryteriów w programie Excel?

Przypuśćmy, że mam kolumnę numerów identyfikacyjnych, która zawiera kilka duplikatów i kolumnę nazw, a teraz chcę połączyć nazwy na podstawie unikalnych numerów identyfikacyjnych, jak pokazano na lewym zrzucie ekranu, aby szybko połączyć tekst na podstawie kryteriów, w jaki sposób moglibyśmy zrobić w programie Excel?

doc łącz tekst na podstawie kryteriów 1

Połącz tekst na podstawie kryteriów z funkcją zdefiniowaną przez użytkownika

Połącz tekst na podstawie kryteriów z Kutools for Excel


Aby połączyć tekst z unikalnymi numerami ID, możesz najpierw wyodrębnić unikalne wartości, a następnie utworzyć funkcję zdefiniowaną przez użytkownika, aby połączyć nazwy na podstawie unikalnego identyfikatora.

1. Weź następujące dane jako przykład, najpierw musisz wyodrębnić unikalne numery identyfikacyjne, zastosuj tę formułę tablicową: =IFERROR(INDEX($A$2:$A$15, MATCH(0,COUNTIF($D$1:D1, $A$2:$A$15), 0)),""), Wprowadź tę formułę do pustej komórki, na przykład D2, a następnie naciśnij Ctrl + Shift + Enter klucze razem, patrz zrzut ekranu:

doc łącz tekst na podstawie kryteriów 2

Wskazówka: W powyższym wzorze, A2: A15 to zakres danych listy, z którego chcesz wyodrębnić unikalne wartości, D1 to pierwsza komórka kolumny, dla której chcesz wyświetlić wynik wyodrębniania.

2. A następnie przeciągnij uchwyt wypełniania w dół, aby wyodrębnić wszystkie unikalne wartości, aż pojawią się puste miejsca, patrz zrzut ekranu:

doc łącz tekst na podstawie kryteriów 3

3. W tym kroku powinieneś utworzyć plik Funkcja zdefiniowana przez użytkownika aby połączyć nazwy na podstawie unikalnych numerów identyfikacyjnych, przytrzymaj ALT + F11 klucze i otwiera plik Microsoft Visual Basic for Applications okno.

4. Kliknij wstawka > Modułi wklej następujący kod w Moduł Okno.

Kod VBA: łącz tekst na podstawie kryteriów

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. Następnie zapisz i zamknij ten kod, wróć do arkusza roboczego i wprowadź tę formułę do komórki E2, = ZŁĄCZ.JEŻELI (2 A $ 15: 2 AUD, D2, 15 B $: XNUMX B $, ",") zobacz zrzut ekranu:

doc łącz tekst na podstawie kryteriów 4

6. Następnie przeciągnij uchwyt wypełniania w dół do komórek, do których chcesz zastosować tę formułę, a wszystkie odpowiadające im nazwy zostały połączone na podstawie numerów identyfikacyjnych, patrz zrzut ekranu:

doc łącz tekst na podstawie kryteriów 5

Porady:

1. W powyższym wzorze A2: A15 to oryginalne dane, na podstawie których chcesz połączyć, D2 to unikalna wartość, którą wyodrębniłeś, a B2: B15 to kolumna z nazwą, którą chcesz połączyć.

2. Jak widać, połączyłem wartości oddzielone przecinkami. Możesz użyć dowolnych innych znaków, zmieniając przecinek „,” wzoru według potrzeb.


Jeśli Kutools dla programu Excel, Z siedzibą w Zaawansowane wiersze łączenia narzędzie, możesz szybko i wygodnie łączyć tekst na podstawie kryteriów.

Kutools dla programu Excel : z ponad 300 poręcznymi dodatkami Excela, które można wypróbować bez ograniczeń w ciągu 30 dni.

Po zainstalowaniu Kutools dla programu Excelwykonaj następujące czynności:

1. Wybierz zakres danych, który chcesz połączyć na podstawie jednej kolumny.

2. Kliknij Kutools > Połącz i podziel > Zaawansowane wiersze łączeniazobacz zrzut ekranu:

3, w Połącz wiersze na podstawie kolumny kliknij kolumnę ID, a następnie kliknij Główny klucz aby ustawić tę kolumnę jako kolumnę kluczową, na podstawie której oparte są twoje połączone dane, zobacz zrzut ekranu:

doc łącz tekst na podstawie kryteriów 7

4. A następnie kliknij Imię kolumnę, w której chcesz połączyć wartości, a następnie kliknij Połączyć opcja i wybierz jeden separator dla połączonych danych, patrz zrzut ekranu:

doc łącz tekst na podstawie kryteriów 8

5. Po zakończeniu tych ustawień kliknij OK aby wyjść z okna dialogowego, a dane w kolumnie B zostały połączone w oparciu o kluczową kolumnę A. Zobacz zrzut ekranu:

doc łącz tekst na podstawie kryteriów 9

Dzięki tej funkcji następujący problem zostanie rozwiązany tak szybko, jak to możliwe:

Jak połączyć wiele wierszy w jeden i zsumować duplikaty w programie Excel?

Pobierz i bezpłatną wersję próbną Kutools dla programu Excel teraz!


Kutools dla programu Excel: z ponad 300 poręcznymi dodatkami do programu Excel, które można wypróbować bez ograniczeń w ciągu 30 dni. Pobierz i bezpłatną wersję próbną teraz!

Najlepsze narzędzia biurowe

🤖 Pomocnik AI Kutools: Zrewolucjonizuj analizę danych w oparciu o: Inteligentne wykonanie   |  Wygeneruj kod  |  Twórz niestandardowe formuły  |  Analizuj dane i generuj wykresy  |  Wywołaj funkcje Kutools...
Popularne funkcje: Znajdź, wyróżnij lub zidentyfikuj duplikaty   |  Usuń puste wiersze   |  Łącz kolumny lub komórki bez utraty danych   |   Okrągły bez wzoru ...
Super wyszukiwanie: Wiele kryteriów VLookup    Wiele wartości VLookup  |   Przeglądanie pionowe na wielu arkuszach   |   Wyszukiwanie rozmyte ....
Zaawansowana lista rozwijana: Szybko twórz listę rozwijaną   |  Zależna lista rozwijana   |  Lista rozwijana wielokrotnego wyboru ....
Menedżer kolumn: Dodaj określoną liczbę kolumn  |  Przesuń kolumny  |  Przełącz stan widoczności ukrytych kolumn  |  Porównaj zakresy i kolumny ...
Polecane funkcje: Fokus siatki   |  Widok projektu   |   Duży pasek formuły    Menedżer skoroszytów i arkuszy   |  Biblioteka zasobów (Automatyczny tekst)   |  Selektor dat   |  Połącz arkusze   |  Szyfruj/odszyfruj komórki    Wysyłaj e-maile według listy   |  Super filtr   |   Specjalny filtr (filtruj pogrubienie/kursywa/przekreślenie...) ...
15 najlepszych zestawów narzędzi12 Tekst Tools (Dodaj tekst, Usuń znaki, ...)   |   50 + Wykres rodzaje (Wykres Gantta, ...)   |   40+ Praktyczne Wzory (Oblicz wiek na podstawie urodzin, ...)   |   19 Wprowadzenie Tools (Wstaw kod QR, Wstaw obraz ze ścieżki, ...)   |   12 Konwersja Tools (Liczby na słowa, Przeliczanie walut, ...)   |   7 Połącz i podziel Tools (Zaawansowane wiersze łączenia, Podział komórki, ...)   |   ... i więcej

Zwiększ swoje umiejętności Excela dzięki Kutools for Excel i doświadcz wydajności jak nigdy dotąd. Kutools dla programu Excel oferuje ponad 300 zaawansowanych funkcji zwiększających produktywność i oszczędzających czas.  Kliknij tutaj, aby uzyskać funkcję, której najbardziej potrzebujesz...

Opis


Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę

  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
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