Slik filtrerer du celler som har dupliserte tekststrenger (ord) i den

En av vennene mine jobber i et helseundersøkelsesfirma. Han tar ofte kontakt med meg om noen av de virkelige problemene han står overfor mens han jobber med data i Excel.

Mange ganger konverterer jeg spørsmålene hans til Excel -opplæringer på dette nettstedet, da det også kan være nyttig for mine andre lesere.

Dette er også en slik opplæring.

Vennen min ringte meg i forrige uke med følgende problem:

Det er adressedata i en kolonne i Excel, og jeg vil identifisere/filtrere celler der adressen har dupliserte tekststrenger (ord).

Her er det lignende datasettet der han ønsket å filtrere celler som har en duplisert tekststreng i den (de med røde piler):

Det som gjør dette vanskelig er at det ikke er noen konsistens i disse dataene. Siden dette er en samling av datasett som er opprettet manuelt av salgsrepresentanter, kan det være variasjoner i datasettet.

Vurder dette:

  • Enhver tekststreng kan gjenta seg i dette datasettet. Det kan for eksempel være navnet på området eller navnet på byen eller begge deler.
  • Ordene er atskilt med et mellomromstegn, og det er ingen konsistens i om bynavnet ville være der etter seks ord eller åtte ord.
  • Det er tusenvis av poster som dette, og behovet er å filtrere postene der det er dupliserte tekststrenger.

Etter å ha vurdert mange alternativer (for eksempel tekst til kolonner og formler), bestemte jeg meg endelig for å bruke VBA for å få dette gjort.

Så jeg opprettet en tilpasset VBA -funksjon ('IdDuplicate') for å analysere disse cellene og gi meg TRUE hvis det er et duplikatord i tekststrengen, og FALSE i tilfelle det ikke er gjentakelser (som vist nedenfor):

Denne egendefinerte funksjonen analyserer hvert ord i tekststrengen og sjekker hvor mange ganger det forekommer i teksten. Hvis tallet er mer enn 1, returnerer det TRUE; ellers returnerer den FALSK.

Det er også laget for å bare telle ord med mer enn tre tegn.

Når jeg har de TRUE/FALSE -dataene, kan jeg enkelt filtrere alle postene som er TRUE.

La meg nå vise deg hvordan du gjør dette i Excel.

VBA -kode for egendefinert funksjon

Dette gjøres ved å opprette en tilpasset funksjon i VBA. Denne funksjonen kan deretter brukes som en hvilken som helst annen regnearkfunksjon i Excel.

Her er VBA -koden for den:

Funksjon IdDuplikater (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 Trinn -1 Hvis Len (StringtoAnalyze (i)) <minWordLen Gå deretter til 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: Sluttfunksjon

Takk Walter for at du foreslår en bedre tilnærming til denne koden!

Slik bruker du denne VBA -koden

Nå som du har VBA -koden, må du plassere den i bakenden av Excel, slik at den kan fungere som en vanlig regnearkfunksjon.

Nedenfor er trinnene for å sette VBA -koden på backend:

  1. Gå til kategorien Utvikler.
  2. Klikk på Visual Basic (du kan også bruke hurtigtasten ALT + F11)
  3. I VB Editor-bakenden som åpnes, høyreklikker du på et av arbeidsbokobjektene.
  4. Gå til "Sett inn" og klikk på "Modul". Dette setter inn modulobjektet for arbeidsboken.
  5. I modulkodevinduet, kopier og lim inn VBA -koden som er nevnt ovenfor.

Når du har VBA -koden i bakenden, kan du bruke funksjonen - 'IdDuplicates' som alle andre vanlige regnearkfunksjoner.

Denne funksjonen tar ett enkelt argument, som er cellereferansen til cellen der du har teksten.

Resultatet av funksjonen er TRUE (hvis det er dupliserte ord i det) eller FALSE (hvis det ikke er duplikater). Når du har denne listen over TRUE/FALSE, kan du filtrere de med TRUE for å få alle cellene som har dupliserte tekststrenger i den.

Merk: Jeg har laget koden bare for å vurdere ordene som er mer enn tre tegn lange. Dette sikrer at hvis det er 1, 2 eller 3 tegn lange ord (for eksempel 12 A, K G M eller L D A) i tekststrengen, blir disse ignorert mens duplikatene teller. Hvis du vil, kan du enkelt endre dette i koden.

Denne funksjonen vil bare være tilgjengelig i arbeidsboken der du har kopiert koden i modulen. Hvis du vil at dette også skal være tilgjengelig i andre arbeidsbøker, må du kopiere og lime inn denne koden i disse arbeidsbøkene. Alternativt kan du også opprette et tillegg (som gjør denne funksjonen tilgjengelig i alle arbeidsbøkene på systemet ditt).

Husk også å lagre denne arbeidsboken i .xlsm -utvidelsen (siden den har en makrokode i den).

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave