Parsing navn på VBA Way

Har du noen gang fått et Excel-regneark med navn, der alle de fulle navnene er i én celle? Din oppgave er å dele navnene inn i fornavn, etternavn - en prosess kjent som parsing. Du kan prøve å bruke en formel og/eller funksjon for å hjelpe, eller du kan bruke Visual Basic for Applications (VBA)-kode.

En vanlig tilnærming er å finne mellomrommet mellom fornavn og etternavn, og vips! – du vet hvor fornavnet slutter og etternavnet begynner.

Med mindre du har navn som er mer komplekse i strukturen, for eksempel Dr. William Healer eller Zak H. Sneezer III.

Her er en typisk VBA-rutine som ser gjennom hvert navn, tegn for tegn, til det finner et mellomrom. Deretter plasserer den det som er til venstre for rommet i en kolonne og det som er til høyre for rommet i kolonnen etter.

Gjør til ActiveCell = "
thename = ActiveCell.Value
For å se = 1 til Len(navnet)
 Hvis Mid(navnet, ser, 1) = " " Da
    ActiveCell.Offset(0, 1) = Venstre(navnet, ser - 1)
    ActiveCell.Offset(0, 2) = Midt(navnet, ser + 1)
    Avslutt for
 Slutt om
Neste
ActiveCell.Offset(1, 0).Aktiver
Løkke

Denne rutinen er nyttig for å analysere navn med bare ett mellomrom, for eksempel Harvey Wallbanger eller Tom Collins. Følgende tabell viser resultatet av å kjøre koden på navn med mer enn ett mellomrom:

Dr. William Healer Dr. William Healer
Zak H. Sneezer III Zak H. Nyser III

Dette er ikke et godt parseforsøk. Det fungerte bra for å analysere Harvey Wallbanger og Tom Collins, men ikke så bra for de andre navnene.

Her er en mer utviklet teknikk som gir bedre resultater. Husk at å analysere navn ikke er perfekt, men å gjøre det på denne måten gjør en bedre jobb.

Teknikken er å telle hvor mange mellomrom som er i det fulle navnet og deretter bryte navnet på et av mellomrommene. Spesielt, hvis det er tre eller flere mellomrom, bruk mellomrom to inn fra høyre som bryterom; ellers, bruk plassen lengst til høyre som bruddplass.

Denne prosessen kjøres i en VBA-subrutine som kaller en funksjon mens du går gjennom navnene. Antall mellomrom bestemmes tidlig i hovedsløyfen, og funksjonen returnerer posisjonen der bryteplassen er.

Sub parse_names()
  Demp navnet som streng
  Demp mellomrom som heltall
  Gjør til ActiveCell = "
    thename = ActiveCell.Value
    mellomrom = 0
    For test = 1 til Len(navnet)
      Hvis Mid(navnet, test, 1) = " " Da
      mellomrom = mellomrom + 1
    Slutt om
  Neste
  Hvis mellomrom >= 3 Da
    break_space_position = space_position(" ", navnet, mellomrom - 1)
  Ellers
    break_space_position = space_position(" ", navn, mellomrom)
  Slutt om
  Hvis mellomrom > 0 Da
    ActiveCell.Offset(0, 1) = Venstre(navnet, pause_mellomromsposisjon - 1)
    ActiveCell.Offset(0, 2) = Midt(navnet, pause_mellomromsposisjon + 1)
  Ellers
    ' dette er for når det fulle navnet bare er et enkelt navn uten mellomrom
    ActiveCell.Offset(0, 1) = navnet
  Slutt om
  ActiveCell.Offset(1, 0).Aktiver
  Løkke
End Sub
Funksjon space_position(what_to_look_for As String, what_to_look_in As String, space_count As Integer) Som heltall
  Dim loop_counter Som heltall
    space_position = 0
    For loop_counter = 1 Til space_count
      space_position = InStr(loop_counter + space_position, what_to_look_in, what_to_look_for)
      Hvis space_position = 0 Avslutt for
    Neste
Avslutt funksjon

Følgende tabell viser hvordan resultatet ser ut nå:

Dr. William Healer Dr. William Helbreder
Zak H. Sneezer III Zak H. Nyser III

Navneparsing er like mye kunst som teknisk prosess. I dette andre eksemplet er alle for- og etternavn i de riktige kolonnene. Hvis et nytt langt navn med fem eller flere mellomrom ble introdusert, kan rutinen få parsingen feil, og VBA-koden vil trenge mer betinget testing i den. Men dette eksemplet er nå på rett spor som en rutine for industri-styrke navneparsing.


Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows

Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows

Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows Microsoft Word åpner filer i skrivebeskyttet modus, noe som gjør det umulig å redigere dem? Ikke bekymre deg, metodene er nedenfor

Hvordan fikse feil utskrift av Microsoft Word-dokumenter

Hvordan fikse feil utskrift av Microsoft Word-dokumenter

Slik fikser du feil ved utskrift av feil Microsoft Word-dokumenter Feil ved utskrift av Word-dokumenter med endrede fonter, rotete avsnitt, manglende tekst eller tapt innhold er ganske vanlig. Men ikke gjør det

Slett penn- og highlighter-tegninger på PowerPoint-lysbilder

Slett penn- og highlighter-tegninger på PowerPoint-lysbilder

Hvis du har brukt pennen eller merkepennen til å tegne på PowerPoint-lysbildene dine under en presentasjon, kan du lagre tegningene til neste presentasjon eller slette dem, slik at du neste gang du viser dem starter med rene PowerPoint-lysbilder. Følg disse instruksjonene for å slette penn- og merkepenntegninger: Slette linje én på […]

Style Library-innhold i SharePoint 2010

Style Library-innhold i SharePoint 2010

Stilbiblioteket inneholder CSS-filer, Extensible Stylesheet Language-filer (XSL) og bilder som brukes av forhåndsdefinerte mastersider, sideoppsett og kontroller i SharePoint 2010. For å finne CSS-filer i stilbiblioteket til et publiseringsnettsted: Velg Site Actions→ View Alt innhold på nettstedet. Innholdet på nettstedet vises. Style-biblioteket ligger i […]

Formater tall i tusenvis og millioner i Excel-rapporter

Formater tall i tusenvis og millioner i Excel-rapporter

Ikke overveld publikum med gigantiske tall. I Microsoft Excel kan du forbedre lesbarheten til dashbordene og rapportene dine ved å formatere tallene dine slik at de vises i tusenvis eller millioner.

Hvordan dele og følge SharePoint-nettsteder

Hvordan dele og følge SharePoint-nettsteder

Lær hvordan du bruker SharePoints sosiale nettverksverktøy som lar enkeltpersoner og grupper kommunisere, samarbeide, dele og koble til.

Hvordan konvertere datoer til julianske formater i Excel

Hvordan konvertere datoer til julianske formater i Excel

Julianske datoer brukes ofte i produksjonsmiljøer som et tidsstempel og hurtigreferanse for et batchnummer. Denne typen datokoding lar forhandlere, forbrukere og serviceagenter identifisere når et produkt ble laget, og dermed alderen på produktet. Julianske datoer brukes også i programmering, militæret og astronomi. Forskjellig […]

Hvordan lage en Access Web App

Hvordan lage en Access Web App

Du kan lage en nettapp i Access 2016. Så hva er en nettapp egentlig? Vel, nettet betyr at det er online, og appen er bare en forkortelse for "applikasjon". En Custom Web App er en online databaseapplikasjon som du får tilgang til fra skyen ved hjelp av en nettleser. Du bygger og vedlikeholder nettappen i skrivebordsversjonen […]

Hurtigstartlinje i SharePoint 2010

Hurtigstartlinje i SharePoint 2010

De fleste sidene i SharePoint 2010 viser en liste over navigasjonskoblinger på hurtigstartlinjen langs venstre side av siden. Hurtigstartlinjen viser koblinger til innhold på nettstedet som lister, biblioteker, nettsteder og publiseringssider. Hurtigstartlinjen inneholder to svært viktige lenker: Linken for alt nettstedinnhold: […]

Hva betyr løserfeilmeldingene i Excel?

Hva betyr løserfeilmeldingene i Excel?

For enkle problemer finner Solver i Excel vanligvis raskt de optimale Solver-variabelverdiene for objektivfunksjonen. Men i noen tilfeller har Solver problemer med å finne Solver-variabelverdiene som optimerer objektivfunksjonen. I disse tilfellene viser Solver vanligvis en melding eller en feilmelding som beskriver eller diskuterer problemet som […]