
Generisk formel
=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))
Sammendrag
For å skille tekst og tall kan du bruke en formel basert på FINN-funksjonen, MIN-funksjonen og LEN-funksjonen med VENSTRE eller HØYRE-funksjonen, avhengig av om du vil trekke ut teksten eller tallet. I eksemplet vist er formelen i C5:
=MIN(FIND((0,1,2,3,4,5,6,7,8,9),B5&"0123456789"))
som returnerer 7, posisjonen til tallet 3 i strengen "epler30".
Forklaring
Oversikt
Formelen ser kompleks ut, men mekanikken er faktisk ganske enkel.
Som med de fleste formler som deler eller trekker ut tekst, er nøkkelen å finne posisjonen til tingen du leter etter. Når du har fått stillingen, kan du bruke andre funksjoner til å trekke ut det du trenger.
I dette tilfellet antar vi at tall og tekst er kombinert, og at tallet vises etter teksten. Fra den originale teksten, som vises i en celle, vil du dele teksten og tallene i separate celler, slik:
Opprinnelig | Tekst | Antall |
Epler30 | Epler | 30 |
fersken24 | ferskener | 24 |
appelsiner12 | appelsiner | 12 |
fersken0 | ferskener | 0 |
Som nevnt ovenfor er nøkkelen i dette tilfellet å finne startposisjonen til nummeret, som du kan gjøre med en formel som denne:
=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))
Når du har posisjonen, for å trekke ut bare teksten, bruk:
=LEFT(A1,position-1)
Og for å trekke ut bare tallet, bruk:
=RIGHT(A1,LEN(A1)-position+1)
I den første formelen ovenfor bruker vi FINN-funksjonen til å finne startposisjonen til nummeret. For find_text bruker vi matrisekonstanten (0,1,2,3,4,5,6,7,8,9), dette får FINN-funksjonen til å utføre et separat søk etter hver verdi i matrisekonstanten. Siden matrisekonstanten inneholder 10 tall, blir resultatet en matrise med 10 verdier. For eksempel, hvis originalteksten er "apples30" vil den resulterende matrisen være:
(8,10,11,7,13,14,15,16,17,18)
Hvert tall i denne matrisen representerer posisjonen til et element i matrisekonstanten i originalteksten.
Deretter returnerer MIN-funksjonen den minste verdien i listen, som tilsvarer posisjonen til det første tallet som vises i originalteksten. I hovedsak får FINN-funksjonen alle tallposisjoner, og MIN gir oss den første tallposisjonen: legg merke til at 7 er den minste verdien i matrisen, som tilsvarer posisjonen til nummeret 3 i originalteksten.
Du lurer kanskje på den merkelige konstruksjonen for inside_text i finn-funksjonen:
B5&"0123456789"
Denne delen av formelen sammenkobler alle mulige tall 0-9 med originalteksten i B5. Dessverre returnerer FIND ikke null når en verdi ikke blir funnet, så dette er bare en smart måte å unngå feil som kan oppstå når et tall ikke blir funnet.
I dette eksemplet, siden vi antar at tallet alltid vil vises som nummer to i originalteksten, fungerer det bra fordi MIN bare tvinger den minste eller første forekomst av et nummer som skal returneres. Så lenge et nummer vises i originalteksten, vil denne posisjonen bli returnert.
Hvis originalteksten ikke inneholder noen tall, returneres en "falsk" posisjon lik lengden på originalteksten + 1. Med denne falske posisjonen vil VENSTRE formel ovenfor fremdeles returnere teksten og HØYRE formel vil returnere en tom streng ("").