Sådan udtrækkes kun tal fra Excel-celle (7 nemme måder)

  • Del Dette
Hugh West

Selv om Microsoft ikke har givet en direkte formel eller syntaks til at kun udtrække tal fra Excel-cellen, kan vi indarbejde en lang række af Excel-formler for at lave en enkelt funktion, der kan bruges til kun at udtrække tal eller cifre fra Excel-celler. I denne artikel vil vi forsøge at vise og forklare i detaljer, hvordan vi kun kan få tal ud af cellerne med de relevante formler under nogle få kriterier.

Download arbejdsbog til øvelser

Download den gratis øvelsesbog, som vi har brugt til at forberede denne artikel. Du kan indtaste tekstværdier med tal i de valgte celler og finde resultaterne med det samme via indlejrede formler.

Udtrække tal fra Cell.xlsm

7 effektive måder at udtrække kun tal fra Excel-celler på

Der vil være én VBA-kode, én Excel-funktion og fem praktiske formler, der hjælper dig med at udtrække tal fra en celle. Som i billedet nedenfor har vi nogle koder, der indeholder tal og bogstaver, hvor der er tal i begyndelsen. Vi skal kun udtrække disse tal eller tal.

1. Udtrække tal fra begyndelsen af en tekst

I denne første metode vil vi kombinere VENSTRE , SUM , LEN , og UDSTEDELSE funktioner til at trække tal ud fra begyndelsen af en tekststreng. Først skriver vi denne formel i cellen, og derefter bruger vi påfyldningshåndtaget , kopierer vi formlen til resten af cellerne.

Trin:

  • Skriv først formlen i celle C5 .

=LEFT(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0","1","2","3","4","5","6","7","8","9"},""))))

  • For det andet skal du trykke på Gå ind på og du får nummer 34 for den første kode.

  • For det tredje skal du bruge Håndtag til påfyldning derefter for at udfylde alle andre celler i kolonnen automatisk C .

🔎 Opdeling af formler

SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},""")

  • Her er det UDSTEDELSE funktionen finder cifrene (0-9) i træk, og hvis de findes, erstatter den det pågældende ciffer i celle B5 med et tomt tegn hver gang, så funktionen vil returnere som- {"34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "4DTXRF", "3DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF"}.

LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"""))

  • LEN funktionen bestemmer antallet af tegn i en streng. Så her er LEN funktionen vil tælle alle de tegn, der findes individuelt i teksterne gennem UDSTEDELSE De resulterende værdier vil i vores tilfælde være {7,7,7,7,6,6,6,7,7,7,7,7,7,7,7}.

LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"""))))

  • Denne del er nu subtraktionen fra antallet af tegn i celle B5 til alle andre tegnnumre, der er fundet individuelt i det foregående afsnit af formlen. Så her vil de resulterende værdier være - {0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0}.

SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"""))))

  • SUM funktionen vil så blot summere alle de subtraherede værdier, der er fundet & resultatet vil altså være her, 2 (0+0+0+1+1+0+0+0+0+0).

=LEFT(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},""))))

  • Og her kommer så den sidste del, hvor den VENSTRE funktionen vil returnere værdierne med et nøjagtigt antal tegn fra venstre, som er fundet i det foregående afsnit af formlen. Da vi fik sumværdien 2, vil funktionen VENSTRE funktion her vil kun returnere 34 fra teksten 34DTXRF .

Relateret: Sådan adskiller du tal i Excel ved hjælp af formel (5 måder)

2. Udtrække tal fra højre side af en tekst

I dette afsnit uddrager vi tallene eller cifrene fra højre side af tekststrengen. Vi bruger RIGHT , MIN , og SØG funktioner her.

Trin:

  • Til at begynde med skal vi i vores datasæt skrive i celle C5 is-

=RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,2,3,4,4,5,6,7,8,9}, B5& "0123456789")) +1)

  • Derefter skal du trykke på Gå ind på og derefter bruge Håndtag til påfyldning til automatisk at udfylde resten af cellerne.

🔎 Opdeling af formler

B5& "0123456789″

  • Her sammenkæder vi værdier i B5 celle med 0123456789 ved at bruge ampersand (&) mellem dem, og vi får den resulterende værdi som- DTXRF340123456789.

SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″)

  • Nu er den SØG funktionen vil søge efter alle cifre (0-9) et efter et i den resulterende værdi, der er opnået i det foregående afsnit, og vil returnere positionerne for disse 10 cifre i tegnene i DTXRF340123456789 Så her vil vores resulterende værdier være- {8,9,10,6,7,13,14,15,16,17}.

MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″))

  • MIN funktionen bruges til at finde det laveste ciffer eller tal i et array. Så her vil den mindste eller laveste værdi være- 6 fra rækken {8,9,10,6,7,7,13,14,15,16,17}, der er fundet i det foregående afsnit af formlen.

LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789″)) +1)

  • Nu kan antallet af tegn i B5 vil blive fundet af LEN Derefter vil den trække værdien 6 (fundet i sidste afsnit) fra og derefter returnere resultatet ved at tilføje 1. Her i vores tilfælde vil den resulterende værdi være 2 (7-6+1) .

RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,2,3,4,5,5,6,7,8,9}, B5& "0123456789″))) +1)

  • RIGHT funktionen returnerer det angivne antal tegn fra den sidste eller højre side af en streng. Efter det resultat, der blev fundet ved subtraktionsprocessen i det foregående afsnit, vil her RIGHT funktionen vil vise de sidste 2 tegn fra celle B5 , og det vil være 34 .

Læs mere: Sådan adskilles tal i én celle i Excel (5 metoder)

3. Udtrække tal fra en vilkårlig del af en tekststreng

Her er en bred løsning til alle tilfælde. Denne metode vil trække tal eller cifre ud fra enhver position i en tekststreng. Desuden vil vi bruge TEXTJOIN , IFERROR , INDIREKTE , MID og RÆKKE funktioner i denne metode.

Trin:

  • Skriv først formlen i din destinationscelle som følger-

=TEXTJOIN(""",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5)))),1)*1),"")))

  • Hvis du derefter bruger Excel 2016 eller en højere version, og tryk derefter på Indtast , ellers tryk på Ctrl+Shift+Enter for at få resultatet for denne arrayformel.
  • Efter dette trin kan du automatisk udfylde andre celler ved hjælp af Håndtag til påfyldning og så er du færdig.

🔎 Opdeling af formler

INDIRECT("1:"&LEN(B5))

  • INDIREKTE funktionen bruges til at gemme et array af celleværdier som en referencetekst. Her bruges ampersand (&) kommandoen sammenkæder længden af tegnene i celle B5 med ufuldstændig rækkevidde syntaks (1:) .
  • Så her er den INDIREKTE funktionen gemmer alle tal mellem 1 og længden af tegnene i celle B5 som en referencetekst.

RÆKKE(INDIRECT("1:"&LEN(B5)))

  • RÆKKE funktionen angiver normalt række nummeret på en celle. Men her i INDIREKTE funktion, da der ikke er nævnt nogen referencecelle, i dette tilfælde er det RÆKKE funktionen uddrager alle værdier eller tal fra de referencetekster, der er gemt i INDIREKTE funktion.
  • Nu for den første celle B5 , de resulterende værdier gennem disse RÆKKE og INDIREKTE funktioner vil være- {1;2;2;3;3;4;4;5;5;6;6;7;8;9}.

(MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)))

  • MID funktionen giver dig mulighed for at bestemme tegnene fra midten af en tekststreng, når du har en startposition & længde.
  • Så her for alle 9 positioner, der er fundet i det foregående afsnit, er MID funktionen vil nu vise alle tegn et efter et for hver position & den vil således returnere værdierne som- {"1″; "9″;" "; "D"; "D"; "D"; "X"; "2″; "M"; "N"}.

IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),"")

  • Nu, den IFERROR er en logisk funktion, der afgør, om en streng er et tal eller noget andet. Hvis den ikke identificerer en streng med tal eller cifre, returnerer den værdien med en defineret tekstkommando.
  • I vores tilfælde vil alle de værdier, der er fundet i det sidste afsnit, blive ganget med 1, og når resultaterne returneres som værdifejl for bogstaver eller tekstværdier, der ikke kan ganges, vil deres IFERROR funktionen vil konvertere fejlene til tomme strenge. Så vores resulterende værdier vil være: {1;9;"";"";"";"";"";"";2;"";"";""}.

=TEXTJOIN(""",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5)))),1)*1),"")))

  • Og nu vil den sidste del blive udført via TEXTJOIN Denne funktion bruges til at sammenkæde eller sammenføje to strenge med en specificeret afgrænser.
  • Så de resulterende værdier, som vi har fundet i det foregående afsnit, vil nu blive samlet ved siden af dette TEXTJOIN funktion. Og dermed får vi tallet 192.

Læs mere: Sådan udtrækkes flere numre fra en streng i Excel (6 metoder)

4. Indlejring af flere funktioner for kun at få tal frem

Nu vil vi vise dig en anden formel til kun at udtrække tal fra enhver position i en Excel-celle. Selv om det kan virke ret komplekst, vil vi bryde hele formlen ned og forsøge at forklare alle de kompakte funktioner med lethed. Derudover vil vi bruge IF , LARGE , INDEX , SUMPRODUKT , og ISNUMBER funktioner i denne formel.

  • Til at begynde med skal du skrive denne formel i celle C5 Du skal kun erstatte cellehenvisningen baseret på din egen celle i regnearket, og ved at indlejre denne formel får du det forventede resultat med det samme. Og denne formel fungerer perfekt i alle versioner af Excel.

=IF(SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0","1","2","3","4","5","6","7","8","9"}, "")))>0, SUMPRODUCT(MID(0&B5, LARGE(INDEX(ISNUMBER(--MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))* ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1) * 10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),"")

  • Herefter skal du trykke på Indtast først efter at du har skrevet hele formlen, og så er du færdig.

🔎 Opdeling af formler

Før vi begynder at gennemgå denne massive & kompakte formel, kan vi opdele den i nogle dele som-

=IF(A>0, SUMPRODUCT(B 1 *C 1 , B 2 *C 2 , ..........B n C n ),"")

Denne syntaks betyder, at hvis A er større end 0, så er alle produkterne af B n og C n vil give det endelige resultat. Og hvis A ikke er større end 0, returneres resultatet som en tom eller blank celle.

  • A = SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, ""
  • B = MID(0&B5, LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))* ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1)
  • C = 10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),""

Opdeling af del A = SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, ""

SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, "")

  • UDSTEDELSE funktionen finder alle cifre (0-9) et efter et i teksten 19 DDX2MN hver gang og erstatter disse cifre med en tom streng på de steder, hvor cifrene står.
  • De resulterende værdier i et array vil således være- {"19 DDX2MN", "9 DDX2MN", "19 DDXMN", "19 DDXMN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "1 DDX2MN"}.

LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, ""))

  • LEN funktionen vil nu tælle antallet af tegn i alle strengværdierne fra det foregående afsnit. Denne funktion vil altså returnere {9,8,8,8,9,9,9,9,9,9,9,9,9,9,8}.

LEN(B5)-LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, ""))

  • I denne del af formlen er der nu et antal tegn i celle B5 trækker alle de tal, der er fundet i det foregående afsnit, fra hinanden. De resulterende værdier er så: {0,1,1,1,0,0,0,0,0,0,0,0,0,1}.

SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, ""))))

  • Med hjælp fra SUM funktionen, vil værdierne i arrayet, som blev fundet i det sidste afsnit, blive til 3 (0+1+1+1+0+0+0+0+0+0+0+0+0+0+1).
  • Så ifølge den første del af vores formel, A>0 (3>0) Nu går vi videre til den næste del af opdelingen.

Opdeling af del B = MID(0&B5, LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))* ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1))

INDIRECT("$1:$"&LEN(B5))

  • INDIREKTE funktionen her gemmer strengværdierne som en reference til arrayet. Inden for parentesen er der et ampersand (&) kommandoen vil sammenføje antallet af tegn, der findes i celle B5 Det betyder, at fra 1 til det definerede antal tegn vil hvert tegn blive gemt som en array-reference.

RÆKKE(INDIRECT("$1:$"&LEN(B5)))

  • Nu, denne RÆKKE funktionen trækker alle tallene ud af arrayet og de resulterende værdier for celle B5 vil være- {1;2;3;4;4;5;6;7;8;9}.

MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1)

  • I denne del af formlen er det MID funktionen vil udtrykke alle tegn fra celle B5 baseret på alle de positioner, der er fundet som numre i det foregående afsnit. De udtrukne værdier vil således blive fundet efter denne del - {"1″; "9″;" "; "D"; "D"; "D"; "X"; "2″; "M"; "N"}.

ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1)))

  • Som ISNUMBER er en logisk funktion, og den vil individuelt afgøre, om de værdier, der er fundet i det foregående afsnit, er talstrenge eller ej. Hvis ja, vil den returnere som TRUE , ellers vil det blive vist som FALSK .
  • Så i vores tilfælde vil resultatet være {TRUE;TRUE;FALSK;FALSK;FALSK;FALSK;FALSK;FALSK;FALSK;TRUE;FALSK;FALSK;FALSK}.

INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))*ROW(INDIRECT("$1:$"&LEN(B5))),0)

  • Hvis du lægger mærke til, at der i ovenstående funktion er et dobbelt bindestreg, kendt som Dobbelt unarisk Den bruges til at konvertere alle logiske værdier til talstrenge- 1(TRUE) eller 0(FALSK) . nu, den INDEX funktionen vil returnere dette resultat som- {1;1;1;0;0;0;0;0;0;0;1;0;0;0}.
  • Derefter ganges de resulterende værdier med de værdier, der er fremkommet ved RÆKKE funktion inde i arrayet, og resultatet vil være: {1;2;0;0;0;0;0;0;0;7;0;0;0;0}.

LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))*ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))

  • LARGE funktionen vil nu omarrangere de største værdier fra arrayet i henhold til de positioner, der er baseret på de tal, der er fundet i RÆKKE funktioner. & vores resulterende værdier for denne del af formlen vil være- {7;2;1;1;0;0;0;0;0;0;0;0;0;0}.

MID(0&B5, LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))*ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1)

  • Denne del af funktionen sammenkæder nu 0 med teksterne i celle B5 Så vil den tilføje 1 individuelt med alle de tal, der er fundet i sidste afsnit, og vis tegnene fra B5 celle baseret på de definerede nummerpositioner.
  • Så vores resultat fra dette afsnit vil være- {"2″; "9″; "1″; "0″; "0″; "0″; "0″; "0″; "0″; "0″; "0″; "0"}.

Opdeling af del C = (10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),"")

  • Denne del vil bestemme potenserne af 10 & gem dem i arrayet. Cifrene i potenserne er de tal, der er fundet i RÆKKE funktion tidligere.
  • Denne del af formlen vil returnere værdierne som- {1;10;100;100;1000;10000;100000;1000000;1000000;10000000;100000000}.

Multiplikation af B n og C n

  • Nu vil de resulterende værdier fra de to sidste store opdelinger af B og C nu blive ganget inden for arrayet. Derefter vil de produkter, der findes fra multiplikationerne, være: {2;90;100;0;0;0;0;0;0;0;0;0;0;0}.
  • Og endelig, den SUMPRODUKT funktionen vil summere de værdier, der findes i arrayet. Så vores endelige resultat vil være 192 (2+90+100+0+0+0+0+0+0) , som er de udtrukne tal fra celle B5 .

Læs mere: Sådan adskiller du tekst og tal i Excel (4 nemme måder)

5. Udtrække femcifrede tal fra en streng

Vi vil bruge en anden formel til at udtrække femcifrede tal fra en hvilken som helst del af en streng i Excel. Vi vil bruge formlen CONCAT og SEQUENCE Desuden har vi ændret vores datasæt en smule i forbindelse med denne metode.

Trin:

  • Først skal du vælge celleområdet C5:C12 .
  • For det andet skal du skrive følgende formel.

=CONCAT(IFERROR(0+MID(B5,SEQUENCE(LEN(B5)),1),1),"""))

  • Til sidst skal du trykke på Ctrl+Endtast .

🔎 Opdeling af formler

  • LEN(B5)
    • Udgang: 11 .
    • Denne funktion returnerer længden af strengen.
  • SEQUENCE(11)
    • Output: {1;2;3;4;5;6;7;8;9;10;11} .
    • Denne funktion returnerer de første elleve tal.
  • MID(B5,{1;2;3;4;5;6;7;8;9;10;11},1)
    • Output: {"1″; "9″;" "; "D"; "D"; "D"; "X"; "2″; "M"; "N"; "3″; "3″; "3″} .
    • Ved hjælp af denne del henter vi de enkelte tegn fra strengen.
  • 0+{"1″; "9″;" ""; "D"; "D"; "X"; "2″; "M"; "N"; "3″; "3″; "3″}
    • Output: {1;9;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;2;#VALUE!;#VALUE!;#VALUE!;3;3;3} .
    • Når vi tilføjer nul til en streng, returnerer den en fejl.
  • IFERROR({1;9;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;3;3},""")
    • Output: {1;9;"";"";"";"";"";"";2;"";"";"";3;3} .
    • Vi får blank for alle fejlværdier.
  • CONCAT({1;9;"";"";"";"";"";"";2;"";"";"";3;3})
    • Output: 19233 .
    • Til sidst lægger vi alle værdierne sammen for kun at udtrække femcifrede tal.

6. Brug af Flash Fill til at udtrække tal inden for et område

Brug af Flash Fill funktion er nemmere og enklere end nogen anden metode, der er nævnt ovenfor. Vi vil udtrække tal fra enhver position i tekststrenge. For at udføre denne metode korrekt skal vi hjælpe Excel med at finde mønsteret af celleværdierne i en kolonne eller række ved kun at foretage udtrækningen for de to første værdier.

Trin:

  • Til at begynde med skal du skrive tallene manuelt i celle C5 .

  • Begynd derefter at indtaste tallene fra celle B6 til celle C6 og Excel vil automatisk genkende mønstret.
  • Til sidst skal du trykke på Indtast .

Bemærkninger: Denne metode har nogle ulemper, og derfor anbefales den ikke i alle tilfælde, hvor du skal udtrække tal fra tekststrenge. Flash Fill følger normalt et mønster fra cellerne i en kolonne eller et område. Så de første 2 eller 3 udtrækninger eller beregninger skal foretages manuelt for at hjælpe Excel med at absorbere det fælles mønster for de resulterende værdier. Men nogle gange følger det ikke det nøjagtige mønster, vi har brug for, og dermed følger det sit eget mønster og giver dig et uoverensstemmende resultat.

Hvis vi f.eks. skulle udtrække to nuller (00) fra de givne data, ville den kun vise ét nul, ikke to. Hvis du vil udtrække tal fra begyndelsen eller de sidste positioner i en celle, vil den også udtrække tekstværdier sammen med tallene.

Læs mere: Sådan udtrækkes tal efter en bestemt tekst i Excel (2 egnede måder)

7. Anvendelse af VBA-kode til at udtrække kun tal fra Excel-cellen

Hvis du er interesseret i at bruge Excel VBA-makro kun at udtrække tal fra cellerne, så skal du følge nedenstående trin. Vi vil vise dig, hvordan du skriver koden i VBA-modul Denne kode vil bede brugeren om at angive input- og outputcelleområderne.

Trin:

  • For det første skal du trykke på ALT+F11 for at åbne den VBA vindue.
  • Derefter, fra den Indsæt skal du vælge fanen Modul Der vises et nyt modulvindue, hvor du skal skrive koderne.

  • For det tredje skal du indsætte følgende koder i dit modul efter kopiering.
 Option Explicit Sub ExtractNumbersOnly() Dim CellValue As Range Dim InBx1 As Range Dim InBx2 As Range Dim NumChar As Integer Dim StartChar As Integer Dim XtrNum As String Dim DBxName1 As String Dim DBxName2 As String Dim Iteration As Integer DBxName1 = "Input Data Selection" DBxName2 = "Output Cell Selection" Set InBx1 = Application.InputBox("Input Range of Text Cells:", _ DBxName1, "", Type:=8)If TypeName(InBx1) = "Nothing" Then Exit Sub Set InBx2 = Application.InputBox("Select Output Cells:", _ DBxName2, "", Type:=8) If TypeName(InBx2) = "Nothing" Then Exit Sub Iteration = 0 XtrNum = "" For Each CellValue In InBx1 Iteration = Iteration + 1 NumChar = Len(CellValue) For StartChar = 1 To NumChar If IsNumeric(Mid(CellValue, StartChar, 1)) Then XtrNum = XtrNum & Mid(CellValue,StartChar, 1) End If Next StartChar InBx2.Item(Iteration) = XtrNum XtrNum = "" Next CellValue End Sub 

  • Derefter skal du trykke på F5 for at udføre koden. En dialogboks med navnet " Valg af inputdata " vil blive vist.
  • Vælg derefter alle tekstcellerne (dvs. B5:B12 ), og tryk på OK .

  • Herefter vises en anden dialogboks med navnet " Valg af udgangscelle " vises, hvor du skal vælge en bestemt celle eller et område af celler for at se uddata eller værdier.
  • Endelig skal du vælge celleområdet C5:C12 og tryk på Indtast .

  • Følgelig vil du se de uddragne tal fra teksterne på én gang. Således vil vi afslutte de syv hurtige metoder til at udtrække tal kun fra Excel-cellen.

🔎 VBA-kode opdeling

Angivelse af parametre

 Option Explicit Sub ExtractNumbersOnly() Dim cellValue As Range Dim InBx1 As Range Dim InBx2 As Range Dim NumChar As Integer Dim StartChar As Integer Dim XtrNum As String Dim DBxName1 As String Dim DBxName2 As String Dim Iteration As Integer DBxName1 = "Input Data Selection" DBxName2 = "Output Cell Selection" 
  • Her i denne del erklærer vi først alle vores parametre som hele tal, strengværdier eller celleintervaller. Derefter giver vi navnene på vores dialogbokse med "Valg af inputdata" og "Valg af udgangscelle" .

Definition af typer af input & Outputs til dialogbokse

 Set InBx1 = Application.InputBox("Input Range of Text Cells:", _ DBxName1, "", Type:=8) If TypeName(InBx1) = "Nothing" Then Exit Sub Set InBx2 = Application.InputBox("Select Output Cells:", _ DBxName2, "", Type:=8) If TypeName(InBx2) = "Nothing" Then Exit Sub Iteration = 0 XtrNum = "" 
  • Nu definerer vi parametrene og deres typer for dialogboksene. Her betyder tilføjelsen Type:=8, at input- og outputdataene vil bestå af referenceceller eller et område af celler.
  • Vi definerer også, at hvis der ikke findes inputdata, vil underprogrammet stoppe. Ved at nævne denne makro vil underprogrammet ikke bryde sammen på grund af manglende data, men det vil snarere stoppe med at fungere.

Kombination af funktionerne i koden Sløjfer til gentagelser

 For Each cellValue In InBx1 Iteration = Iteration + 1 NumChar = Len(cellValue) For StartChar = 1 To NumChar If IsNumeric(Mid(cellValue, StartChar, 1)) Then XtrNum = XtrNum & Mid(cellValue, StartChar, 1) End If Next StartChar InBx2.Item(Iteration) = XtrNum XtrNum = "" Next cellValue End Sub 
  • Sidst af alt er dette den mest afgørende del, hvor vi anvender de funktioner eller formler, som vi skal tildele teksterne for at finde de resulterende værdier fra strengene.
  • En af de store fordele ved at kode en funktion til Excel er, at det ikke er nødvendigt at skrive en stor formel, som vi var nødt til at gøre i tidligere metoder, da VBA har indbyggede kommandoer til at bruge For- eller While-sløjfer, hvor iteration for hver enkelt detalje i en tekststreng kan udføres uden besvær.

Læs mere: Sådan adskiller du tal fra tekst i Excel VBA (3 metoder)

Konklusion

Vi har vist dig 7 nemme metoder til at kun udtrække tal fra en Excel-celle. Det er ikke så enkelt som det ser ud til at være at udtrække tal fra en tekststreng, fordi det kræver en kombination af flere funktioner, hvilket gør den endelige formel eller syntaks kompliceret. Men vi håber, at vores forsøg på at illustrere formlerne ved at opdele de indre funktioner har hjulpet dig til at forstå syntaksen med en smule komfort og lethed.

Hvis du finder andre funktioner eller formler, som vi burde have tilføjet her, så lad os det vide gennem dine værdifulde kommentarer. Du kan også kigge på vores mere informative og interessante artikler om Excel-funktioner på dette websted.

Hugh West er en meget erfaren Excel-træner og analytiker med over 10 års erfaring i branchen. Han har en bachelorgrad i regnskab og finans og en kandidatgrad i Business Administration. Hugh har en passion for undervisning og har udviklet en unik undervisningstilgang, der er nem at følge og forstå. Hans ekspertviden om Excel har hjulpet tusindvis af studerende og fagfolk verden over med at forbedre deres færdigheder og udmærke sig i deres karriere. Gennem sin blog deler Hugh sin viden med verden og tilbyder gratis Excel-tutorials og onlinetræning for at hjælpe enkeltpersoner og virksomheder med at nå deres fulde potentiale.