Trekke første bokstavene fra en String

September 2  by Eliza

Rajeev trenger en formel som vil trekke ut de første bokstavene i en rekke ord. For eksempel, hvis en celle inneholder teksten "Rajeev Kumar Pandey" han ønsker å trekke ut, inn i en annen celle, bokstavene "RKP". Antall ord i serie kan variere fra celle til celle.

Det er et par måter at denne oppgaven kan bli kontaktet. Det antas, til å begynne med, at du ikke ønsker å endre strukturen på regnearket ved å legge til mellom kolonner. Denne antakelsen utelukker, så vel, bruk av tekst til kolonner har å splitte den opprinnelige strengen i enkelte ord.

Nøkkelen til problemet er å sørge for at din formel kan bestemme hvor mellomrommene er i den opprinnelige strengen. Du tenker kanskje at en formel som følgende vil gjøre jobben:

= VENSTRE (A1,1) og MID (A1, FINN ("", A1,1) +1,1) og MID (A1,
FINN ("", A1, FINN ("", A1,1) +1) +1,1)

Denne formelen fungerer delvis. Det fungerer helt fint hvis den opprinnelige strengen har to områder som skiller tre ord. Hvis det er noen færre ord så formelen returnerer en feil. Hvis det er noen flere ord, så er det bare returnerer de første bokstavene i de første tre ord (det ignorerer noe etter den tredje ordet).

Dette betyr at formelen må ikke bare se etter områder, men håndtere feil hvis det ikke er noen mellomrom eller hvis det er for få plasser. Den feilsjekking betyr at formelen blir mye lenger:

= HVIS (ISERR (VENSTRE (A1,1) og MID (A1, SØK ("", A1) +1,1)
& MID (A1, SØK ("", A1, SØK ("", A1) 1) +1,1)
& MID (A1, SØK ("", A1, SØK ("", A1, SØK ("", A1) +1) +1) +1,1)),
IF (ISERR (VENSTRE (A1,1) og MID (A1, SØK ("", A1) +1,1)
& MID (A1, SØK ("", A1, SØK ("", A1) 1) +1,1)),
IF (ISERR (VENSTRE (A1,1) og MID (A1, SØK ("", A1) +1,1)),
IF (ISERR (VENSTRE (A1,1)), "", VENSTRE (A1,1)), VENSTRE (A1,1) og MID (A1, SØK ("", A1) +1,1)),
VENSTRE (A1,1) og MID (A1, SØK ("", A1) +1,1) og MID (A1, SØK ("", A1,
SØK ("", A1) 1) +1,1)), VENSTRE (A1,1) og MID (A1, SØK ("", A1) +1,1)
& MID (A1, SØK ("", A1, SØK ("", A1) 1) +1,1)
& MID (A1, SØK ("", A1, SØK ("", A1, SØK ("", A1) +1) +1) +1,1))

Denne formelen vil håndtere, ordentlig, noe fra 0 til 4 ord i en streng. Det forutsetter også at strengen ikke starter eller slutter med en plass og at den ikke inneholder flere numre av mellomrom mellom ord. Hvis du ønsker å håndtere et større antall ord eller andre potensielle komplikasjoner (for eksempel antall mellomrom mellom ord), så er det best å bruke en brukerdefinert funksjon.

Det finnes en rekke måter som en brukerdefinert funksjon kunne trekke de ledende figurer fra ordene i en streng. Faktisk fikk jeg ganske mange varianter som oppnår det samme. Følgende eksempel, derimot, er den mest dekkende kode som jeg kjørte over:

Funksjon Initials1 (Raw As String) As String
Dim Temp Som Variant
Dim J As Integer

Application.Volatile
Temp = Split (Trim (Raw))

For J = 0 For å UBound (Temp)
Initials1 = Initials1 & Venstre (Temp (J), 1)
Neste J
End Function

Denne koden vil fungere i noen versjon av VBA starter med Excel 2000. Split funksjon "river fra hverandre" en streng basert på hvor mellomrom skje innen det. De enkelte ordene i strengen er plassert inn i en matrise (i dette tilfellet, Temp) hvor du kan deretter få tilgang til enkelte ord. For å bruke funksjonen i regnearket, bruker du bare noe sånt som dette:

= Initials1 (A1)

Hvis du bruker en versjon av Excel som ikke støtter den Split funksjon, deretter følgende kode vil fungere helt fint, i tillegg:

Funksjon Initials2 (Raw As String)
Dim p As Integer

Application.Volatile
Initials2 = ""
p = 0
Gjøre
Initials2 = Trim (Initials2) & Mid (Raw, p + 1, 1)
p = InStr (p + 1, Raw, "")
Loop Inntil p = 0
End Function

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (8661) gjelder for Microsoft Excel 97, 2000, 2002, og 2003. Du kan finne en versjon av dette tipset for Båndet av Excel (Excel 2007 og senere) her: Trekke første bokstavene fra en String.