Cellen filteren die herhaalde tekstreeksen (woorden) bevatten

Cellen filteren die herhaalde tekstreeksen (woorden) bevatten

een vriend van mijIk heb vaak contact met hem over enkele van de echte problemen waarmee hij wordt geconfronteerd bij het werken met gegevens in Excel.

Vaak vertaal ik zijn vraag naar een Excel-zelfstudie op deze site, omdat het ook nuttig kan zijn voor mijn andere lezers.

Dit is ook zo'n tutorial.

Mijn vriend belde me vorige week met de volgende vragen:

Ik heb adresgegevens in een kolom in Excel en ik wil cellen identificeren/filteren die herhaalde tekstreeksen (woorden) in het adres bevatten.

Hier is een vergelijkbare dataset waarin hij cellen (cellen met rode pijlen) wil filteren die herhalende tekstreeksen bevatten:

Identificeer dubbele tekstreeksen in Excel - Gegevenssetadres

Wat dit nu moeilijk maakt, is dat de gegevens niet consistent zijn.Aangezien dit een compilatie is van datasets die handmatig door verkopers zijn gemaakt, kunnen er verschillen in de datasets zijn.

denk er over na:

  • Elke tekenreeks kan in deze dataset worden herhaald.Het kan bijvoorbeeld een regionaam of een plaatsnaam zijn, of beide.
  • De woorden worden gescheiden door spatietekens en er is geen consistentie in het feit of de plaatsnaam na zes of acht tekens komt.
  • Er zijn duizenden van dergelijke records en die met herhaalde tekstreeksen moeten worden gefilterd.

Nadat ik veel opties had overwogen, zoals tekst naar kolommen en formules, besloot ik uiteindelijk VBA te gebruiken om het werk te doen.

Dus ik heb een aangepaste VBA-functie ('IdDuplicate') gemaakt om deze cellen te ontleden en me TRUE te geven als er dubbele woorden in de tekstreeks staan ​​en ONWAAR als er geen duplicaten zijn (zoals hieronder weergegeven):

Dubbele tekstreeksen identificeren in Excel - Demo datasetadres

Deze aangepaste functie analyseert elk woord in de tekenreeks en controleert hoe vaak het in de tekst voorkomt.Retourneert TRUE als het aantal groter is dan 1;Geef anders ONWAAR terug.

Het is ook gemaakt om alleen woorden met meer dan drie tekens te tellen.

Zodra ik de TRUE/FALSE-gegevens heb, kan ik gemakkelijk alle records filteren die WAAR zijn.

Ik zal u nu laten zien hoe u dit in Excel kunt doen.

VBA-code voor aangepaste functie

Dit wordt gedaan door een aangepaste functie in VBA te maken.Deze functie kan vervolgens worden gebruikt als elke andere werkbladfunctie in Excel.

gerelateerde vraag:  CCleaner Pro Review - Nieuwe functies en hulpprogramma voor stuurprogramma-update

Hier is de VBA-code:

Function IdDuplicates(rng As Range) As String Dim StringtoAnalyze As Variant Dim i As Integer Dim j As Integer Const minWordLen As Integer = 4 StringtoAnalyze = Split(UCase(rng.Value), " ") For i = UBound(StringtoAnalyze) To 0 Stap -1 If Len(StringtoAnalyze(i)) < minWordLen Then GoTo SkipA For j = 0 To i - 1 If StringtoAnalyze(j) = StringtoAnalyze(i) Then IdDuplicates = "TRUE" GoTo SkipB End If Next j SkipA: Next i IdDuplicates = "FALSE" SkipB: functie beëindigen

Hoe deze VBA-code te gebruiken?

Nu u de VBA-code hebt, moet u deze in de backend van Excel plaatsen, zodat deze werkt als een gewone werkbladfunctie.

gerelateerde vraag:  KB5003173 Probleem: de beste oplossing voor het mislukken van de update met fout 0x800f0922

Hier zijn de stappen om de VBA-code in de backend te plaatsen:

  1. Ga naar het tabblad Ontwikkelaars.Identificeer dubbele tekenreeksen - tabblad Ontwikkelaar in het lint
  2. Klik op Visual Basic (u kunt ook de sneltoets ALT+F11 gebruiken)Selecteer Visual basic op het lint
  3. Klik in de geopende backend van de VB-editor met de rechtermuisknop op een willekeurig werkmapobject.
  4. Ga naar "Invoegen" en klik op "Module".Hiermee wordt het moduleobject van de werkmap ingevoegd.Module invoegen voor aangepaste VAB-code
  5. Kopieer en plak in het modulecodevenster de hierboven genoemde VBA-code.VBA-code voor backend - identificeer dubbele tekenreeksen

Zodra u de VBA-code in de backend hebt, kunt u de functie - 'IdDuplicates' gebruiken zoals elke andere reguliere werkbladfunctie.

Deze functie heeft één parameter nodig, de celverwijzing van de cel waar je de tekst hebt.

Het resultaat van deze functie is TRUE (als er dubbele woorden in staan) of FALSE (als er geen duplicaten zijn).Zodra u deze TRUE/FALSE-lijst hebt, kunt u deze filteren met TRUE om alle cellen te krijgen die herhaalde tekstreeksen bevatten.

Opmerking: de code die ik heb gemaakt, is alleen voor woorden die langer zijn dan drie tekens.Dit zorgt ervoor dat als er woorden in de tekstreeks staan ​​die 1, 2 of 3 tekens lang zijn (bijv. 12 A, KGM of LDA), die woorden worden genegeerd bij het tellen van duplicaten.U kunt dit indien nodig eenvoudig in code wijzigen.

Deze functie is alleen beschikbaar in de werkmap waar u de code in de module hebt gekopieerd.Als u wilt dat deze code ook in andere werkmappen beschikbaar is, moet u deze code kopiëren en in die werkmappen plakken.U kunt ook een invoegtoepassing maken (als u deze inschakelt, wordt de functie beschikbaar in alle werkmappen op uw systeem).

Vergeet ook niet om deze werkmap op te slaan met de extensie .xlsm (omdat deze macrocode bevat).

Oh Hallo 👋Leuk je te ontmoeten.

Abonneer op onze nieuwsbrief, Zeer regelmatig verzendenGeweldige technologieNaar je bericht.

gerelateerde vraag:  Sorteren op achternaam in Excel (eenvoudige handleiding)

Post Commentaar