Parsing af navne på VBA Way

Har du nogensinde fået et Excel-regneark med navne, hvor alle de fulde navne er i én celle? Din opgave er at opdele navnene i fornavn, efternavn - en proces kendt som parsing. Du kan prøve at bruge en formel og/eller en funktion til at hjælpe, eller du kan bruge Visual Basic for Applications (VBA) kode.

En almindelig tilgang er at finde mellemrummet mellem fornavn og efternavn, og voila! – du ved, hvor fornavnet slutter, og efternavnet starter.

Medmindre du har navne, der er mere komplekse i strukturen, såsom Dr. William Healer eller Zak H. Sneezer III.

Her er en typisk VBA-rutine, der ser gennem hvert navn, tegn for tegn, indtil det finder et mellemrum. Derefter placerer den det, der er til venstre for mellemrummet i en kolonne, og det, der er til højre for mellemrummet i kolonnen efter.

Gør indtil ActiveCell = "
thename = ActiveCell.Value
For at se = 1 til Len(navnet)
 If Mid(thename, looking, 1) = " " Så
    ActiveCell.Offset(0, 1) = Venstre(navnet, ser - 1)
    ActiveCell.Offset(0, 2) = Mid(navnet, ser + 1)
    Afslut for
 Afslut Hvis
Næste
ActiveCell.Offset(1, 0).Aktiver
Løkke

Denne rutine er nyttig til at parse navne med kun ét mellemrum, såsom Harvey Wallbanger eller Tom Collins. Følgende tabel viser resultatet af at køre koden på navne med mere end ét mellemrum:

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

Dette er ikke et godt parsingforsøg. Det fungerede fint til at analysere Harvey Wallbanger og Tom Collins, men ikke så godt for de andre navne.

Her er en mere udviklet teknik, der giver bedre resultater. Husk på, at parsing af navne ikke er perfekt, men at gøre det på denne måde gør et bedre stykke arbejde.

Teknikken er at tælle hvor mange mellemrum der er i det fulde navn og derefter skille navnet fra hinanden på et af mellemrummene. Især, hvis der er tre eller flere mellemrum, skal du bruge mellemrummet to i fra højre som brydeplads; ellers skal du bruge pladsen længst til højre som afbrydelsesplads.

Denne proces køres i en VBA-underrutine, der kalder en funktion, mens du går gennem navnene. Antallet af mellemrum bestemmes tidligt i hovedløkken, og funktionen returnerer den position, hvor bryderummet er.

Sub parse_names()
  Dæmp navnet som streng
  Dæmp mellemrum som heltal
  Gør indtil ActiveCell = "
    thename = ActiveCell.Value
    mellemrum = 0
    For test = 1 til Len(navnet)
      Hvis Mid(navnet, test, 1) = " " Så
      mellemrum = mellemrum + 1
    Afslut Hvis
  Næste
  Hvis mellemrum >= 3, så
    break_space_position = space_position(" ", navnet, mellemrum - 1)
  Andet
    break_space_position = space_position(" ", navn, mellemrum)
  Afslut Hvis
  Hvis mellemrum > 0, så
    ActiveCell.Offset(0, 1) = Venstre(navnet, pause_mellemrumsposition - 1)
    ActiveCell.Offset(0, 2) = Mid(navnet, break_space_position + 1)
  Andet
    ' dette er til, når det fulde navn kun er et enkelt navn uden mellemrum
    ActiveCell.Offset(0, 1) = navnet
  Afslut Hvis
  ActiveCell.Offset(1, 0).Aktiver
  Løkke
Slut Sub
Funktion space_position(what_to_look_for As String, what_to_look_in As String, space_count Som Integer) Som heltal
  Dim loop_counter Som heltal
    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 Afslut for
    Næste
Afslut funktion

Følgende tabel viser, hvordan resultatet ser ud nu:

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

Navneparsing er lige så meget kunst som teknisk proces. I dette andet eksempel er alle for- og efternavne i de korrekte kolonner. Hvis et nyt langt navn med fem eller flere mellemrum blev introduceret, kan rutinen få parsingen forkert, og VBA-koden ville have brug for mere betinget testning i den. Men dette eksempel er nu på rette vej som en industriel styrke navneparsing rutine.


Sådan blokerer du Microsoft Word fra at åbne filer i skrivebeskyttet tilstand på Windows

Sådan blokerer du Microsoft Word fra at åbne filer i skrivebeskyttet tilstand på Windows

Sådan blokerer du Microsoft Word fra at åbne filer i skrivebeskyttet tilstand på Windows Microsoft Word åbner filer i skrivebeskyttet tilstand, hvilket gør det umuligt at redigere det? Bare rolig, metoderne er nedenfor

Sådan rettes forkert udskrivning af Microsoft Word-dokumenter

Sådan rettes forkert udskrivning af Microsoft Word-dokumenter

Sådan rettes fejl ved udskrivning af forkerte Microsoft Word-dokumenter Fejl ved udskrivning af Word-dokumenter med ændrede skrifttyper, rodede afsnit, manglende tekst eller tabt indhold er ret almindelige. Men lad være

Slet pen- og highlighter-tegninger på dine PowerPoint-dias

Slet pen- og highlighter-tegninger på dine PowerPoint-dias

Hvis du har brugt pennen eller highlighteren til at tegne på dine PowerPoint-dias under en præsentation, kan du gemme tegningerne til næste præsentation eller slette dem, så næste gang du viser den, starter du med rene PowerPoint-dias. Følg disse instruktioner for at slette pen- og highlighter-tegninger: Sletning af linjer en ved […]

Indhold af stilbibliotek i SharePoint 2010

Indhold af stilbibliotek i SharePoint 2010

Style-biblioteket indeholder CSS-filer, Extensible Stylesheet Language-filer (XSL) og billeder, der bruges af foruddefinerede mastersider, sidelayouts og kontrolelementer i SharePoint 2010. For at finde CSS-filer i Style-biblioteket på et udgivelsessted: Vælg Site Actions→ View Alt webstedsindhold. Indholdet af webstedet vises. Style-biblioteket ligger i […]

Formater tal i tusinder og millioner i Excel-rapporter

Formater tal i tusinder og millioner i Excel-rapporter

Overvæld ikke dit publikum med gigantiske tal. I Microsoft Excel kan du forbedre læsbarheden af ​​dine dashboards og rapporter ved at formatere dine tal, så de vises i tusinder eller millioner.

Sådan deler og følger du SharePoint-websteder

Sådan deler og følger du SharePoint-websteder

Lær, hvordan du bruger SharePoints sociale netværksværktøjer, der lader enkeltpersoner og grupper kommunikere, samarbejde, dele og forbinde.

Sådan konverteres datoer til julianske formater i Excel

Sådan konverteres datoer til julianske formater i Excel

Julianske datoer bruges ofte i produktionsmiljøer som et tidsstempel og hurtig reference for et batchnummer. Denne type datokodning giver detailhandlere, forbrugere og serviceagenter mulighed for at identificere, hvornår et produkt blev fremstillet, og dermed produktets alder. Julianske datoer bruges også i programmering, militæret og astronomi. Forskellige […]

Sådan opretter du en Access Web App

Sådan opretter du en Access Web App

Du kan oprette en webapp i Access 2016. Så hvad er en webapp overhovedet? Nå, web betyder, at det er online, og app er kun en forkortelse for "applikation". En Custom Web App er en online databaseapplikation, der tilgås fra skyen ved hjælp af en browser. Du bygger og vedligeholder webappen i desktopversionen […]

Hurtig startlinje i SharePoint 2010

Hurtig startlinje i SharePoint 2010

De fleste sider i SharePoint 2010 viser en liste over navigationslinks på linjen Hurtig start langs venstre side af siden. Hurtig startlinjen viser links til fremhævet webstedsindhold såsom lister, biblioteker, websteder og udgivelsessider. Hurtigstartlinjen indeholder to meget vigtige links: Linket Alt webstedsindhold: […]

Hvad betyder Solver-fejlmeddelelserne i Excel?

Hvad betyder Solver-fejlmeddelelserne i Excel?

Ved simple problemer finder Solver i Excel som regel hurtigt de optimale Solver-variableværdier for objektivfunktionen. Men i nogle tilfælde har Solver problemer med at finde de Solver-variableværdier, der optimerer objektivfunktionen. I disse tilfælde viser Solver typisk en meddelelse eller en fejlmeddelelse, der beskriver eller diskuterer det problem, der […]