Hoe om selle te filter wat herhaalde teksstringe (woorde) bevat

Hoe om selle te filter wat herhaalde teksstringe (woorde) bevat

n vriend van myEk is gereeld met hom in kontak oor sommige van die werklike probleme waarmee hy te kampe het wanneer hy met data in Excel werk.

Baie keer vertaal ek sy navraag in 'n Excel-tutoriaal op hierdie webwerf, want dit kan ook nuttig wees vir my ander lesers.

Dit is ook een so 'n tutoriaal.

My vriend het my verlede week gebel met die volgende vrae:

Ek het adresdata in 'n kolom in Excel en ek wil selle identifiseer/filtreer wat herhaalde teksstringe (woorde) in die adres bevat.

Hier is 'n soortgelyke datastel waar hy selle (selle met rooi pyle) wil filter wat herhalende teksstringe in het:

Identifiseer duplikaat teksstringe in Excel - Datasteladres

Wat dit nou moeilik maak, is dat die data nie konsekwent is nie.Aangesien dit 'n samestelling is van datastelle wat met die hand deur verkoopsverteenwoordigers geskep is, kan daar verskille in die datastelle wees.

dink daaroor:

  • Enige teksstring kan in hierdie datastel herhaal word.Dit kan byvoorbeeld 'n streeknaam of 'n stadnaam wees, of albei.
  • Woorde word deur spasie-karakters geskei, en daar is geen konsekwentheid of stadname na ses of agt karakters is nie.
  • Daar is duisende sulke rekords en moet diegene wat enige herhaalde teksstringe het, filtreer.

Nadat ek baie opsies oorweeg het, soos teks na kolomme en formules, het ek uiteindelik besluit om VBA te gebruik om die werk te doen.

So ek het 'n pasgemaakte VBA-funksie ('IdDuplicate') geskep om hierdie selle te ontleed en vir my WAAR te gee as daar duplikaatwoorde in die teksstring is en ONWAAR as daar geen duplikate is nie (soos hieronder getoon):

Identifisering van duplikaatteksstringe in Excel - Datasteladresdemo

Hierdie pasgemaakte funksie ontleed elke woord in die teksstring en kontroleer hoeveel keer dit in die teks voorkom.Wys WAAR as die telling groter as 1 is;Stuur anders ONWAAR terug.

Dit is ook geskep om slegs woorde met meer as drie karakters te tel.

Sodra ek die WAAR/ONWAAR data het, kan ek maklik alle rekords filter wat WAAR is.

Laat ek jou nou wys hoe om dit in Excel te doen.

VBA-kode vir persoonlike funksie

Dit word gedoen deur 'n pasgemaakte funksie in VBA te skep.Hierdie funksie kan dan as enige ander werkbladfunksie in Excel gebruik word.

Verwante vrae  Hoe om unieke ewekansige getalle in Excel te genereer

Hier is sy VBA-kode:

Funksie IdDuplicates(rng As Range) As String Dim StringtoAnalize As Variant Dim i As Heelgetal Dim j As Heelgetal Konst minWordLen As Heelgetal = 4 StringtoAnalyze = Split(UCase(rng.Value), " ") Vir 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 = "ONWAAR" SkipB: Eindig funksie

Hoe om hierdie VBA-kode te gebruik

Noudat jy die VBA-kode het, moet jy dit in Excel se backend sit sodat dit as 'n gewone werkbladfunksie kan werk.

Verwante vrae  Hoe om Excel-draaitabel-berekende velde by te voeg en te gebruik

Hier is die stappe om die VBA-kode in die agterkant te plaas:

  1. Gaan na die ontwikkelaaroortjie.Identifiseer duplikaat teksstringe - Ontwikkelaar-oortjie in die lint
  2. Klik op Visual Basic (jy kan ook die sleutelbordkortpad ALT+F11 gebruik)Kies Visual Basic uit die lint
  3. In die oop VB-redigeerder-agterkant, regskliek op enige werkboekvoorwerp.
  4. Gaan na "Voeg in" en klik op "Module".Dit sal die module-objek van die werkboek invoeg.Voeg module in vir pasgemaakte VAB-kode
  5. Kopieer en plak die VBA-kode hierbo genoem in die modulekodevenster.VBA-kode vir backend - identifiseer duplikaat teksstringe

Sodra jy die VBA-kode in die agterkant het, kan jy die funksie – 'IdDuplicates' soos enige ander gewone werkbladfunksie gebruik.

Hierdie funksie neem een ​​parameter, die selverwysing van die sel waar jy die teks het.

Die resultaat van hierdie funksie is WAAR (as daar duplikaatwoorde in is) of ONWAAR (as daar geen duplikate is nie).Sodra jy hierdie WAAR/ONWAAR-lys het, kan jy dié met WAAR filtreer om alle selle te kry wat herhaalde teksstringe in het.

Let wel: Die kode wat ek geskep het, is slegs om rekening te hou met woorde wat langer as drie karakters is.Dit verseker dat indien daar woorde in die teksstring is wat 1, 2 of 3 karakters lank is (bv. 12 A, KGM of LDA), daardie woorde geïgnoreer word wanneer duplikate getel word.Jy kan dit maklik in kode verander indien nodig.

Hierdie kenmerk is slegs beskikbaar in die werkboek waar jy die kode in die module gekopieer het.As jy wil hê dat hierdie kode ook in ander werkboeke beskikbaar moet wees, moet jy hierdie kode in daardie werkboeke kopieer en plak.Alternatiewelik kan jy 'n byvoeging skep (as jy dit aktiveer, sal die kenmerk in alle werkboeke op jou stelsel beskikbaar wees).

Onthou ook om hierdie werkboek met 'n .xlsm-uitbreiding te stoor (omdat dit makro-kode bevat).

o hallo 👋Aangename kennis.

Teken in op ons nuusbrief, stuur baie gereeldpuik tegnologiena jou pos.

Verwante vrae  Hoe om XML-lêers in Excel in te voer (of XML na Excel om te skakel)

Post Kommentaar