Note: The other languages of the website are Google-translated. Back to English
English English
  • Dokumenty
  • vynikat
  • Jak snadno zřetězit text na základě kritérií v aplikaci Excel?

Jak snadno zřetězit text na základě kritérií v aplikaci Excel?

Předpokládejme, že mám sloupec čísel ID, který obsahuje nějaké duplikáty a sloupec jmen, a teď chci zřetězit jména na základě jedinečných čísel ID, jak je ukázáno vlevo, rychle kombinovat text na základě kritérií, jak bychom mohli dělat v Excelu?

doc kombinovat text na základě kritérií 1

Zřetězit text na základě kritérií pomocí funkce definované uživatelem

Zřetězte text na základě kritérií pomocí programu Kutools pro Excel


Chcete-li kombinovat text s jedinečnými čísly ID, můžete nejprve extrahovat jedinečné hodnoty a poté vytvořit funkci definovanou uživatelem a kombinovat názvy na základě jedinečného ID.

1. Vezměte si následující data jako příklad, musíte nejprve extrahovat jedinečná čísla ID, použijte tento vzorec pole: =IFERROR(INDEX($A$2:$A$15, MATCH(0,COUNTIF($D$1:D1, $A$2:$A$15), 0)),""), Zadejte tento vzorec do prázdné buňky, například D2, a stiskněte Ctrl + Shift + Enter klíče společně, viz screenshot:

doc kombinovat text na základě kritérií 2

Tip: Ve výše uvedeném vzorci, A2: A15 je rozsah dat seznamu, ze kterého chcete extrahovat jedinečné hodnoty, D1 je první buňka ve sloupci, který chcete vyjmout výsledek extrakce.

2. A potom přetáhněte úchyt výplně dolů a extrahujte všechny jedinečné hodnoty, dokud se nezobrazí mezery, viz screenshot:

doc kombinovat text na základě kritérií 3

3. V tomto kroku byste měli vytvořit a Uživatelem definovaná funkce Chcete-li kombinovat jména na základě jedinečných identifikačních čísel, podržte stisknutou klávesu ALT + F11 klíče a otevře se Microsoft Visual Basic pro aplikace okno.

4, klikněte Vložit > Modula vložte následující kód do Modul Okno.

Kód VBA: zřetězení textu na základě kritérií

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. Poté tento kód uložte a zavřete, vraťte se do svého listu a zadejte tento vzorec do buňky E2, = CONCATENATEIF ($ A $ 2: $ A $ 15, D2, $ B $ 2: $ B $ 15, ",") , viz screenshot:

doc kombinovat text na základě kritérií 4

6. Poté přetáhněte popisovač výplně dolů do buněk, na které chcete použít tento vzorec, a všechny odpovídající názvy byly kombinovány na základě čísel ID, viz screenshot:

doc kombinovat text na základě kritérií 5

Tip:

1. Ve výše uvedeném vzorci A2: A15 jsou původní data, která chcete kombinovat, D2 je jedinečná hodnota, kterou jste extrahovali, a B2: B15 je sloupec s názvem, který chcete spojit dohromady.

2. Jak vidíte, kombinoval jsem hodnoty oddělené čárkou, můžete použít libovolné další znaky změnou čárky „,“ vzorce podle potřeby.


Pokud máte Kutools pro Excel, S jeho Pokročilé kombinování řádků nástroj, můžete rychle a pohodlně zřetězit textovou základnu podle kritérií.

Kutools pro Excel : s více než 300 praktickými doplňky Excel, můžete si je vyzkoušet bez omezení do 30 dnů.

Po instalaci Kutools pro Excel, proveďte následující kroky:

1. Na základě jednoho sloupce vyberte rozsah dat, který chcete kombinovat.

2, klikněte Kutools > Sloučit a rozdělit > Pokročilé kombinování řádků, viz screenshot:

3. V Kombinujte řádky na základě sloupce V dialogovém okně klikněte na sloupec ID a poté klikněte na Primární klíč Chcete-li tento sloupec vytvořit jako klíčový sloupec, na kterém jsou založena vaše kombinovaná data, podívejte se na snímek obrazovky:

doc kombinovat text na základě kritérií 7

4. A pak klikněte na tlačítko Jméno a Příjmení sloupec, do kterého chcete hodnoty zkombinovat, klikněte na Kombinovat možnost a vyberte jeden oddělovač pro kombinovaná data, viz screenshot:

doc kombinovat text na základě kritérií 8

5. Po dokončení těchto nastavení klikněte na OK k opuštění dialogu a data ve sloupci B byla zkombinována společně na základě klíčového sloupce A. Viz screenshot:

doc kombinovat text na základě kritérií 9

Díky této funkci bude následující problém vyřešen co nejdříve:

Jak kombinovat více řádků do jednoho a sčítat duplikáty v aplikaci Excel?

Stáhněte si zdarma zkušební verzi Kutools pro Excel!


Kutools pro Excel: s více než 300 praktickými doplňky aplikace Excel, můžete vyzkoušet bez omezení do 30 dnů. Stáhněte si a vyzkoušejte zdarma hned teď!

Nejlepší kancelářské nástroje produktivity

Kutools pro Excel vyřeší většinu vašich problémů a zvýší vaši produktivitu
80%

  • Opakované použití: Rychle vložte složité vzorce, grafy a cokoli, co jste dříve používali; Šifrovat buňky s heslem; Vytvořte seznam adresátů a posílat e-maily ...
  • Super Formula Bar (snadno upravit více řádků textu a vzorce); Rozložení pro čtení (snadno číst a upravovat velké množství buněk); Vložit do filtrovaného rozsahu...
  • Sloučit buňky / řádky / sloupce bez ztráty dat; Rozdělit obsah buněk; Zkombinujte duplicitní řádky / sloupce... Zabraňte duplicitním buňkám; Porovnat rozsahy...
  • Vyberte možnost Duplikovat nebo Jedinečný Řádky; Vyberte prázdné řádky (všechny buňky jsou prázdné); Super hledání a fuzzy hledání v mnoha sešitech; Náhodný výběr ...
  • Přesná kopie Více buněk beze změny odkazu na vzorec; Automaticky vytvářet reference do více listů; Vložte odrážky, Zaškrtávací políčka a další ...
  • Extrahujte text, Přidat text, Odebrat podle pozice, Odebrat mezeru; Vytváření a tisk mezisoučtů stránkování; Převod mezi obsahem buněk a komentáři...
  • Super filtr (uložit a použít schémata filtrů na jiné listy); Rozšířené řazení podle měsíce / týdne / dne, frekvence a dalších; Speciální filtr tučnou kurzívou ...
  • Kombinujte sešity a pracovní listy; Sloučit tabulky na základě klíčových sloupců; Rozdělte data do více listů; Dávkový převod xls, xlsx a PDF...
  • Více než
    300
    výkonné funkce
    . Podporuje Office/Excel
    2007-2019 a 365
    . Podporuje všechny jazyky. Snadné nasazení ve vašem podniku nebo organizaci. Plné funkce
    30
    -denní zkušební verze zdarma. 60denní záruka vrácení peněz.
karta kte 201905

Office Tab přináší do Office rozhraní s kartami a usnadňuje vám práci

  • Povolte úpravy a čtení na kartách ve Wordu, Excelu, PowerPointu, Publisher, Access, Visio a Project.
  • Otevřete a vytvořte více dokumentů na nových kartách ve stejném okně, nikoli v nových oknech.
  • Zvyšuje vaši produktivitu tím
    50%
    a každý den vám sníží stovky kliknutí myší!
officetab dno
Komentáře (38)
Zatím žádné hodnocení. Buďte první, kdo ohodnotí!
Tento komentář byl moderátorem webu minimalizován
Toto je vynikající řešení (kód VBA) a mé požadavky řešilo během několika minut. Doporučím vaše stránky ostatním a budu navštěvovat vše, co budu do budoucna potřebovat.
Tento komentář byl moderátorem webu minimalizován
Díky za tento kód. Bylo to PŘESNĚ to, co jsem potřeboval. Ušetřil jste mi spoustu námahy, děkuji mnohokrát.
Tento komentář byl moderátorem webu minimalizován
Děkuji za příspěvek, to je přesně to, co hledám. Zdá se, že kód vba neukládám správně. Zobrazuje se mi chybová zpráva o nalezeném nejednoznačném názvu. Nějaké návrhy nebo krok za krokem ke kroku VBA tohoto projektu? dík
Tento komentář byl moderátorem webu minimalizován
Bude tento nástroj schopen zpracovat kombinace citlivé na malá a velká písmena, jako je jABC 123 abc 345 ABc 678 ABC 912
Tento komentář byl moderátorem webu minimalizován
Tento kód VBA mi zachránil den. Děkuji!
Tento komentář byl moderátorem webu minimalizován
Hledám způsob, jak použít variaci tohoto kódu k vytvoření seznamu variant na základě hlavní varianty. Pomocí vašich příkladných dat bych potřeboval zkombinovat sloupce A a B do jedinečných identifikátorů a poté tyto identifikátory zřetězit do každého řádku na základě hodnoty ve sloupci A, s vyloučením hodnoty z kombinované pro tento řádek a zbytek v alfa řazení. pořadí: Hlavní jmenný seznam id id varianta CN20150012 Lucy CN20150012-Lucy CN20150012-Andy CN20150012-Monica CN20150012-Phiby US20150011 Tommas US20150011-Tommas US20150011-Rose CN20150012 Monica CN20150012-Monica CN20150012-Andy CN20150012-Lucy CN20150012-Phiby CN20150012 Phiby CN20150012-Phiby CN20150012 -Andy CN20150012-Lucy CN20150012-Monica US20150011 Rose US20150011-Rose US20150011-Tommas UK20150014 Peter UK20150014-Peter UK20150014-Anith UK20150014-Kristi UK20150014-Libin JP20150010 Ramon JP20150010-Ramon JP20150010-Brenda JP20150010-James UK20150014 Libin UK20150014-Libin UK20150014-Anith UK20150014 -Kristi UK20150014-Peter UK20150014 Anith UK20150014-Anith UK20150014-Kristi UK20150014-Libin UK20150014-Peter JP20150010 James JP20150010 20150010 James JP20150010-Brenda JP20150010-James JP20150012-Matus CN20150012 Andy CN20150012-Andy CN20150012-Lucy CN20150012-Monica CN20150014-Phiby UK20150014 Matus UK20150010-Matus JP20150010-Brenda JP20150014-James UK20150014 Kristi UK20150014-Kristi UK20150014-Anith UK20150014-Libin UK20150010- Peter JP20150010 Brenda JP20150010-Brenda JP20150010-James JP1000-Ramon Mám list s více než 4 řádky, každá položka má až XNUMX varianty. Pokusit se to udělat ručně je nemožné, ale nemohu najít řešení, které by vyhovovalo mým potřebám.
Tento komentář byl moderátorem webu minimalizován
Aktualizace stejného vzorce concatenateif() zabere více času. mám 5000 řádků. a jeho více než 2 hodiny se stále aktualizuje :( Nějaké rozlišení, aby to fungovalo rychle?
Tento komentář byl moderátorem webu minimalizován
Vysvětleno podrobně a snadno srozumitelné, opravdu pomohlo, když jsem byl uvízl v přesně stejné situaci.
Tento komentář byl moderátorem webu minimalizován
Velmi užitečné a pěkně vysvětlené
Tento komentář byl moderátorem webu minimalizován
Skvělé, děkuji! Použil jsem řešení VBA a fungovalo to skvěle.
Tento komentář byl moderátorem webu minimalizován
Skvělý!!! Děkuji mnohokrát!
Tento komentář byl moderátorem webu minimalizován
Nefunguje pro velký rozsah dat. Zjistil jsem, že pracovní rozsah je pouze do A2:A362. Byli bychom vděční, kdybyste se podělili o řešení pro velký rozsah dat, jako je A2:A200000 .... Děkujeme
Tento komentář byl moderátorem webu minimalizován
Funguje skvěle jen pomalu. Dělám to s 27 XNUMX řádky textu v excelu, stačí to spustit, uvařit a nechat to běžet
Tento komentář byl moderátorem webu minimalizován
Nefunguje pro velký rozsah dat. Zjistil jsem, že jeho pracovní datový rozsah je až A2:A362. Byli bychom vděční, kdybyste sdíleli řešení pro pokrytí širšího datového rozsahu, jako je A2:A200000 ..... Děkujeme
Tento komentář byl moderátorem webu minimalizován
Ahoj! concactenateif je přesně to, co jsem hledal. Ale bohužel to nemůže fungovat. Vždy se zobrazí chyba kompilace: chyba syntaxe. Nějaké nápady? V minulosti jsem si u některých importovaných modulů VBA všiml, že jsem musel nahradit "," za ";" stejně jako v mém PC, možná díky mému regionálnímu nastavení, to je jediný způsob, jak to funguje. Dychtivě používejte vestavěné sumify atd. Ale nechápu, kde na tomhle dělám chybu. Další možností, která přichází na mysl, je skutečnost, že v Office 365 „concat“ nahrazuje „concactenate“. Můžete prosím pomoci? Předem děkuji, Yash
Tento komentář byl moderátorem webu minimalizován
Kód používá k odsazení některé nerozdělitelné mezery, ty se vypínají v Excelu 2016. Těžko odhalit neviditelnou chybu..
Tento komentář byl moderátorem webu minimalizován
Po vložení tohoto kódu do Excelu 2016 jsem měl problém - obsahuje nepravidelné mezery (možná nerozdělitelné mezery?), které vyvolávají syntaktické chyby, které nejsou patrné bez ohledu na to, jak zblízka se díváte, protože jsou neviditelné! Problémem jsou odsazené prostory. Vložte kód do Wordu a zapněte skryté znaky, abyste je viděli.
Tento komentář byl moderátorem webu minimalizován
Páni!! Génius! Fungovalo jako kouzlo! Přicházejí prostory, které se zobrazují jako jiný charakter. Díky moc Dave! Zajímalo by mě, jak jste na tento nápad přišli! Také se divte, jak to funguje pro některé další peeps.. Každopádně ještě jednou díky!
Tento komentář byl moderátorem webu minimalizován
Existuje způsob, jak to udělat na Macu????
Je to přesně to, co potřebuji - dejte mi prosím vědět (nebo jestli by to udělal nějaký software pro Mac, o kterém víte). Díky
Tento komentář byl moderátorem webu minimalizován
Existuje způsob, jak použít tuto funkci CONCATENATEIF na samostatném listu? Funguje to, když to vložím do stejného listu jako vstupní data, ale potřebuji obě tabulky v různých listech a nefunguje to.
Tento komentář byl moderátorem webu minimalizován
Ano, co chcete udělat, je přidat funkci do modulu. Přejděte do editoru VBA, klikněte pravým tlačítkem myši na "VBAProject" v Průzkumníku projektu, přejděte myší na položku nabídky "Vložit" a v této podnabídce vyberte "Modul". Všechny funkce, které tam zadáte, budou použitelné na jakémkoli listu ve vašem sešitu.
Tento komentář byl moderátorem webu minimalizován
Ahoj lidi, mám chybu #NAME? když použiji vzorce CONCATENATEIF v souboru aplikace Excel po nastavení kódu VBA pro toto, mohl by mi někdo pomoci to vyřešit, díky moc
Tento komentář byl moderátorem webu minimalizován
Tak snadné, děkuji :)
Tento komentář byl moderátorem webu minimalizován
Je možné nahradit rozdělovač čárek zalomením řádku, tj. char(10)? Mnohokrát děkuji.
Tento komentář byl moderátorem webu minimalizován
Dobrý den, Davide,

Chcete-li spojit buňky se zalomením řádku, může vám pomoci následující uživatelsky definovaná funkce.

Funkce 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)
Funkce ukončení
End If
Pro I = 1 To CriteriaRange.Count
If CriteriaRange.Cells(I).Value = Condition Then
xResult = xResult & vbCrLf & ConcatenateRange.Cells(I).Value
End If
Příště já
If xResult <> "" Pak
xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
End If
ConcatenateIf_LineBreak = xResult
Funkce ukončení
End Function

Po vložení tohoto kódu použijte tento vzorec: =ConcatenateIf_LineBreak(A2:A13,F2,B2:B13,",").

Po získání výsledků pomocí tohoto vzorce byste měli kliknout na Zalomit text, abyste získali správné výsledky, které potřebujete.
Tento komentář byl moderátorem webu minimalizován
Děkuji mnohokrát! Bylo to tak jednoduché a hodně to pomohlo!!
Zatím zde nejsou žádné komentáře
Načíst další
Zanechat své připomínky
Odesílání jako host
×
Ohodnoťte tento příspěvek:
0   Postavy
Doporučená umístění

Sociální sítě

Copyright © 2009 - www.extendoffice.com. | Všechna práva vyhrazena. Poháněno ExtendOffice. | |. | Sitemap
Microsoft a logo Office jsou ochranné známky nebo registrované ochranné známky společnosti Microsoft Corporation ve Spojených státech a / nebo jiných zemích.
Chráněno Sectigo SSL