Hvis du støter på en situasjon der du bare trenger det første ordet på hver linje i en celle i stedet for hele tegnet, må du lese denne artikkelen. Følgende opplæring hjelper deg med å hente bare det første ordet gjennom VBA -kode i excel.
I denne artikkelen vil vi fokusere på hvordan du bare beholder det første ordet i hver linje i en celle atskilt med semikolon via makrokoder.
Spørsmål: Dataene jeg jobber med har noen ganger flere linjer i hver av cellene, og jeg vil bare trekke ut det første ordet.
Du finner det originale spørsmålet her
Følgende er et øyeblikksbilde av inputteksten (før ark)
Følgende er et øyeblikksbilde av inputteksten (After Sheet) i kolonne A & krever utskrift i kolonne B; se øyeblikksbildet nedenfor:
For å få koden; vi må følge trinnene nedenfor for å starte VB -editor
- Klikk på kategorien Utvikler
- Velg Visual Basic fra kodegruppen
- Kopier koden nedenfor i standardmodulen
Funksjon FirstWordOnly (rng As Range) Dim Arr () As Variant Dim Count As Integer Dim i As Integer Count = Len (rng) - Len (Replace (rng, Chr (10), "")) If Count> 0 Then ReDim Arr (0 å telle) For i = 0 å telle hvis i = 0 så arr (i) = venstre (rng, InStr (1, rng, "") - 1) ElseIf j = 0 Da j = InStr (1, rng, Chr (10)) Arr (i) = Midt (rng, j + 1, InStr (j, rng, "") - j) Ellers j = InStr (j + 1, rng, Chr (10)) Arr (i) = Midt (rng, j + 1, InStr (j, rng, "") - j) Slutt hvis neste FirstWordOnly = Bli med (Arr, ";") Else If InStr (1, rng, "")> 0 Da FirstWordOnly = Venstre (rng, InStr (1, rng, "")) Else FirstWordOnly = rng Slutt hvis slutt hvis sluttfunksjon
Nå er VBA -koden klar til bruk; vi vil bruke den nyopprettede brukerdefinerte funksjonen, dvs. "FirstWordOnly" i Before Sheet.
- For å få utgangen ved hjelp av UDF i celle B2 vil formelen være
- = FirstWordOnly (A2)
Kode Forklaring:
I koden ovenfor har vi brukt COUNT, LEN, REPLACE, IF, INSTR, MID, CHR, LEFT, JOIN VBA -funksjoner.
- ‘Len (rng)’; dette vil kontrollere lengden på cellen som vi refererer til
- ‘Erstatt (rng, Chr (10)," ") '; Koden sjekker Chr (10) dvs. linjeskift i hver linje og erstatter deretter med dobbelt anførselstegn (ingenting)
- ‘Count = Len (rng) - Len (Replace (rng, Chr (10),“ ”))’; Count lagrer lengdeforskjellen på hver linje etter at linjeskiftet er byttet ut
- Hvis telle> 0; dette vil sjekke om Count -lengden er større enn null, og hvis den blir funnet lik null, dvs. cellen er tom, vil IF -tilstanden ikke utføre koden. For å sjekke dette, kan du bruke = FirstWordOnly (A5) i celle B5 og den vil returnere 0
- Hvis cellen ikke er tom, vil For loop brukes med IF -tilstand, og med VENSTRE -funksjonen vil vi hente det første ordet
- JOIN -funksjon vil legge til semikolon på slutten hvis det er flere linjer i hver celle
Konklusjon: Ved å bruke UDF kan vi fjerne alt i hver cellelinje bortsett fra første ord gjennom VBA. Denne funksjonen fungerer i alle versjoner fra gammel til ny, dvs. Microsoft Excel 2003, Microsoft Excel 2007, Microsoft Excel 2010, Microsoft Excel 2013.
Hvis du likte bloggene våre, del den med vennene dine på Facebook. Og du kan også følge oss på Twitter og Facebook.
Vi vil gjerne høre fra deg, gi oss beskjed om hvordan vi kan forbedre, utfylle eller innovere arbeidet vårt og gjøre det bedre for deg. Skriv til oss på e -post