Excel-formel: Dela text och siffror -

Innehållsförteckning

Generisk formel

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))

Sammanfattning

För att separera text och siffror kan du använda en formel baserad på HITTA-funktionen, MIN-funktionen och LEN-funktionen med VÄNSTER eller HÖGER-funktionen, beroende på om du vill extrahera texten eller numret. I exemplet som visas är formeln i C5:

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),B5&"0123456789"))

som returnerar 7, positionen för siffran 3 i strängen "apples30".

Förklaring

Översikt

Formeln ser komplex ut, men mekaniken är faktiskt ganska enkel.

Som med de flesta formler som delar upp eller extraherar text är nyckeln att hitta positionen för det du letar efter. När du väl har positionen kan du använda andra funktioner för att extrahera det du behöver.

I det här fallet antar vi att siffror och text kombineras och att numret visas efter texten. Från originaltexten, som visas i en cell, vill du dela upp texten och siffrorna i separata celler, så här:

Original Text siffra
Äpplen30 Äpplen 30
persikor24 persikor 24
apelsiner12 apelsiner 12
persikor0 persikor 0

Som nämnts ovan är nyckeln i det här fallet att hitta startpositionen för numret, vilket du kan göra med en sådan formel:

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))

När du har position, för att extrahera bara texten, använd:

=LEFT(A1,position-1)

Och för att extrahera bara numret, använd:

=RIGHT(A1,LEN(A1)-position+1)

I den första formeln ovan använder vi funktionen HITTA för att hitta startpositionen för numret. För find_text använder vi arraykonstanten (0,1,2,3,4,5,6,7,8,9), detta gör att FIND-funktionen utför en separat sökning efter varje värde i arraykonstanten. Eftersom arraykonstanten innehåller 10 nummer blir resultatet en array med 10 värden. Till exempel, om originaltexten är "apples30" blir den resulterande matrisen:

(8,10,11,7,13,14,15,16,17,18)

Varje nummer i denna array representerar positionen för ett objekt i arraykonstanten inuti originaltexten.

Därefter returnerar MIN-funktionen det minsta värdet i listan, vilket motsvarar positionen för det första numret som visas i originaltexten. I grund och botten får FINN-funktionen alla nummerpositioner och MIN ger oss den första nummerpositionen: märk att 7 är det minsta värdet i matrisen, vilket motsvarar positionen för siffran 3 i originaltexten.

Du kanske undrar om den udda konstruktionen för inom_text i sökfunktionen :

B5&"0123456789"

Denna del av formeln sammanfogar alla möjliga nummer 0-9 med originaltexten i B5. Tyvärr returnerar FIND inte noll när ett värde inte hittas, så det här är bara ett smart sätt att undvika fel som kan uppstå när ett nummer inte hittas.

I det här exemplet, eftersom vi antar att numret alltid kommer att visas andra i originaltexten, fungerar det bra eftersom MIN tvingar endast den minsta, eller första förekomsten, av ett nummer som ska returneras. Så länge som ett nummer visas i originaltexten kommer den positionen att returneras.

Om originaltexten inte innehåller några siffror returneras en "falsk" position som motsvarar längden på originaltexten + 1. Med denna falska position kommer VÄNSTER formeln ovan fortfarande att returnera texten och HÖGER formel kommer att returnera en tom sträng ("").

Bra länkar

Formel av Rick Rothstein på Mr Excel

Intressanta artiklar...