Utpakking Først og siste ord

January 5  by Eliza

Reggie har en celle som inneholder tre eller flere ord. (Antall ord kunne variere.) Han trenger en formel som gjør det mulig for ham å trekke ut enten det første ordet i den cellen eller det siste ordet i cellen. For eksempel, hvis cellen inneholder uttrykket "Reggie var her i 2012", så han trenger en formel for å trekke "Reggie" og en til å trekke ut "2012".

Du kan trekke ut begge ord ved hjelp av formler. Trekke ut det første ordet er relativt grei. Alt du trenger å gjøre er å finne plasseringen av den første plass i setningen, deretter trekke ut hva som er til venstre for det. Hvis man forutsetter at uttrykket er i A1 kan man bruke formelen:

= VENSTRE (A1, FINN ("", A1) -1)

I prinsippet, for å få det siste ordet kan oppnås den samme, er det bare mer komplisert å finne den siste plass i strengen. En måte å gjøre dette på er å:

  1. Telle antall plasser
  2. Endrer den siste plass til en annen karakter (som ikke er et annet sted i uttrykket)
  3. Deretter finner ut at "annen karakter"
  4. Ta den del av uttrykket på høyre side av den "annen karakter"

Den "annen karakter" man kan bruke er den første ASCII-tegn (dvs. char (1)), som er ikke-utskrift og svært lite sannsynlig å være i den setningen. Antall mellomrom kan bli funnet ved å ta differansen mellom lengden av uttrykket med lengden av uttrykket uten mellomrom (ved hjelp SUBSTITUTE å erstatte alle mellomrom med null-streng):

LEN (A1) -LEN (STEDFORTREDER (A1, "", ""))

Deretter kan du erstatte char (1) for den siste forekomsten av plass:

ERSTATNINGS (A1, "", CHAR (1), LEN (A1) -LEN (STEDFORTREDER (A1, "", "")))

Du kan deretter finne plasseringen av røye (1) i denne strengen:

FINN (CHAR (1), ERSTATNINGS (A1, "", CHAR (1), LEN (A1) -
LEN (ERSTATNINGS (A1, "", ""))))

Det første tegnet i det siste ordet er en karakter forbi dette:

1+ FINN (CHAR (1), ERSTATNINGS (A1, "", CHAR (1), LEN (A1) -
LEN (ERSTATNINGS (A1, "", ""))))

Man kan da bruke MID funksjon for å trekke ut den delen av strengen som starter på dette stedet til slutten av strengen. (Du trenger ikke å beregne den nøyaktige lengden. Hvis du plukke et tall større enn lengden på det siste ordet, bare det siste ordet vil bli valgt. Dermed kan du begynne på den posisjonen over og trekke ut antall tegn i strengen å sikre at du har nok).:

= MID (A1,1 + FIND (CHAR (1), ERSTATNINGS (A1, "", CHAR (1),
LEN (A1) -LEN (STEDFORTREDER (A1, "", "")))), LEN (A1))

Du kan også, hvis du foretrekker det, opprette egendefinerte funksjoner for å hente de ordene du vil. Griper det første ordet er enkelt:

Funksjon FirstWord (c As String)
Dim arr

arr = Split (Trim (c), "")
FirstWord = arr (LBound (arr))
End Function

Funksjonen bruker den Split-funksjonen til å trekke fra hverandre alt som er i den spesifiserte cellen, ved hjelp av den andre parameteren ("") som skilletegn. Hvert element i matrisen (arr) inneholder da en del av den opprinnelige streng. I dette tilfellet er det som blir tilbake er det første elementet (spesifisert av LBound) i matrisen-det første ordet.

Siden ordene fra uttrykket blir plassert i en matrise, kan du bruke bare en liten variasjon på funksjonen til å returnere det siste ordet:

Funksjon LastWord (c As String)
Dim arr

arr = Split (Trim (c), "")
LastWord = arr (UBound (arr))
End Function

Legg merke til at, i hovedsak, er den eneste reelle endringen i funksjonen bruk av UBound istedenfor LBound. Den UBound funksjon spesifiserer det siste element i matrisen. Du kan bruke begge disse funksjonene i et regneark på denne måten:

= FirstWord (A1)
= LastWord (A1)

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (11984) 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ørst og siste ord.