Innehållsförteckning
Även om Microsoft inte har tillhandahållit någon direkt formel eller syntax för att endast utvinna siffror från Excel-cellen, kan vi införliva ett brett utbud av Excel-formler för att skapa en enda funktion som kan användas för att hämta endast siffror eller tal från Excel-celler. I den här artikeln ska vi försöka visa och förklara i detalj hur vi kan hämta endast siffror från cellerna med lämpliga formler enligt några få kriterier.
Ladda ner övningsboken
Ladda ner övningsboken gratis som vi har använt för att förbereda den här artikeln. Du kan mata in textvärden med siffror i de markerade cellerna och få fram resultaten omedelbart med hjälp av inbäddade formler.
Extrahera siffror från Cell.xlsm
7 effektiva sätt att extrahera endast siffror från Excel-cellen
Det kommer att finnas en VBA-kod, en Excel-funktion och fem praktiska formler som hjälper dig att extrahera siffror från en cell. Som i bilden nedan har vi några koder som innehåller siffror och bokstäver där siffrorna finns i början. Vi måste extrahera endast dessa siffror eller tal.
1. Ta fram siffror från början av en text
I denna första metod kommer vi att kombinera VÄNSTER , SUMMA , LEN , och UTBYGGNING för att ta ut siffror från början av en textsträng. Först skriver vi formeln i cellen och sedan använder vi Handtaget för fyllning kopierar vi formeln till resten av cellerna.
Steg:
- Först skriver du formeln i cellen C5 .
=LEFT(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0","1","2","3","4","5","6","7","8","9"},""))))
- För det andra trycker du på Gå in på och du får siffran 34 för den första koden.
- För det tredje kan du använda Handtag för fyllning sedan för att automatiskt fylla ut alla andra celler i kolumnen C .
🔎 Fördelning av formler
➤ SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"")
- Här kan UTBYGGNING funktionen kommer att hitta siffrorna (0-9) i följd och, om de hittas, kommer den att ersätta den siffran i cellen B5 Funktionen kommer alltså att ge följande resultat: {"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 bestämmer antalet tecken i en sträng. Här är det alltså LEN funktionen kommer att räkna alla tecken som finns individuellt i texterna via UTBYGGNING De resulterande värdena blir i vårt fall {7,7,7,7,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″},""))))
- Denna del är subtraktionen från antalet tecken i cellen B5 till alla andra antal tecken som hittats individuellt i det föregående avsnittet av formeln. Här blir de resulterande värdena alltså - {0,0,0,0,1,1,0,0,0,0,0,0,0,0}.
➤ SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"")))
- SUMMA funktionen summerar sedan helt enkelt alla subtraherade värden som hittats & resultatet blir alltså här, 2 (0+0+0+1+1+0+0+0+0+0).
➤ = VÄNSTER(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},""))))
- Och nu kommer den sista delen där den VÄNSTER funktionen returnerar värdena med ett exakt antal tecken från den vänstra sidan som hittades i det föregående avsnittet av formeln. Eftersom vi har fått summavärdet 2, kommer funktionen VÄNSTER funktionen här kommer endast att återge 34 från texten 34DTXRF .
➥ Relaterat: Hur du separerar siffror i Excel med hjälp av en formel (5 sätt)
2. Extrahera siffror från den högra sidan av en text
I det här avsnittet extraherar vi siffrorna från den högra sidan av textsträngen. Vi använder RÄTT , MIN , och SÖKNING funktioner här.
Steg:
- Till att börja med måste vi i vårt dataset skriva i cellen C5 is-
=RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789")) +1)
- Därefter trycker du på Gå in på och sedan använda Handtag för fyllning för att fylla resten av cellerna automatiskt.
🔎 Fördelning av formler
➤ B5& "0123456789″
- Här sammanfogar vi värdena i B5 cell med 0123456789 genom att använda ampersand (&) mellan dem och vi får det resulterande värdet som- DTXRF340123456789.
➤ SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″)
- Nu har SÖKNING funktionen kommer att söka efter alla siffror (0-9) en efter en i det resultatvärde som erhålls i föregående avsnitt och kommer att återge positionerna för dessa 10 siffror i tecknen i DTXRF340123456789 Så här blir våra resulterande värden {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 används för att hitta den lägsta siffran eller det lägsta talet i en matris. Här blir det lägsta värdet alltså- 6 från matrisen {8,9,10,6,7,13,14,15,16,17} som finns i det föregående avsnittet av formeln.
➤ LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789″)) +1)
- Nu kan antalet tecken i B5 kommer att hittas av LEN Funktionen. Sedan subtraherar den värdet 6 (som vi hittade i det sista avsnittet) och returnerar sedan resultatet genom att lägga till 1. I vårt fall blir det resulterande värdet 2 (7-6+1) .
➤ RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789″)) +1)
- RÄTT funktionen returnerar det angivna antalet tecken från den sista eller högra sidan av en sträng. Efter resultatet från subtraktionsprocessen i föregående avsnitt, används här RÄTT funktionen visar de två sista tecknen från cellen B5 , och det blir 34 .
Läs mer: Hur man separerar siffror i en cell i Excel (5 metoder)
3. Extrahera siffror från vilken del som helst av en textsträng
Här är en bred lösning för alla fall. Den här metoden tar fram siffror eller tal från vilken position som helst i en textsträng. Dessutom använder vi TEXTJOIN , IFERROR , INDIRECT , MID och ROW funktioner i denna metod.
Steg:
- Först skriver du formeln i målcellen på följande sätt-
=TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),"")))
- Om du sedan använder Excel 2016 eller högre version och tryck sedan på Gå in på annars trycker du på Ctrl+Shift+Enter för att få fram resultatet för denna matrisformel.
- Efter detta steg kan du fylla ut andra celler automatiskt med hjälp av Handtag för fyllning och du är klar.
🔎 Fördelning av formler
➤ INDIRECT("1:"&LEN(B5))
- INDIRECT funktionen används för att lagra en array av cellvärden som en referenstext. Här används ampersand (&) kommandot sammanfogar längden på tecknen i cellen B5 med ofullständig syntax för intervallet (1:) .
- Här är alltså INDIRECT funktionen kommer att lagra alla tal mellan 1 och teckenlängden i cellen B5 som en referenstext.
➤ ROW(INDIRECT("1:"&LEN(B5)))
- ROW funktionen anger vanligtvis radnumret för en cell. Men här i INDIRECT funktion, eftersom ingen referenscell har nämnts, i det här fallet är det ROW funktionen hämtar alla värden eller siffror från de referenstexter som finns lagrade i INDIRECT funktion.
- Nu, för den första cellen B5 , de resulterande värdena genom dessa ROW och INDIRECT funktionerna kommer att vara- {1;2;3;3;4;5;5;6;7;8;9}.
➤ (MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1))
- MID funktionen kan du bestämma tecknen från mitten av en textsträng, med en startposition & längd.
- För alla de 9 positioner som vi hittade i föregående avsnitt, är alltså MID funktionen kommer nu att visa alla tecken ett efter ett för varje position & därmed kommer värdena att återges som- {"1″; "9″;" "; "D"; "D"; "D"; "X"; "2″; "M"; "N"}.
➤ IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),"")
- Nu har IFERROR är en logisk funktion som avgör om en sträng är ett nummer eller något annat. Om den inte identifierar en sträng med nummer eller siffror returnerar den värdet med ett definierat textkommando.
- I vårt fall kommer alla värden som hittats i det sista avsnittet att multipliceras med 1, och när resultaten returneras som värdefel för bokstäver eller textvärden som inte kan multipliceras, kommer deras IFERROR funktionen omvandlar felen till tomma strängar. Våra resultatvärden blir alltså: {1;9;"";"";"";"";"";"";2;"";"";""}.
➤ =TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),"")))
- Och nu kommer den sista delen att utföras med hjälp av TEXTJOIN Funktionen används för att sammanfoga eller sammanfoga två strängar med en angiven avgränsare.
- De resultatvärden som vi har hittat i föregående avsnitt kommer nu att sammanfogas tillsammans med detta. TEXTJOIN funktion. På så sätt får vi fram siffran 192.
Läs mer: Hur man extraherar flera siffror från en sträng i Excel (6 metoder)
4. Nesting av flera funktioner för att få fram endast siffror
Nu ska vi visa dig en annan formel för att extrahera endast siffror från vilken position som helst i en Excel-cell. Även om det kan verka ganska komplext kommer vi att bryta ner hela formeln och försöka förklara alla kompakta funktioner på ett enkelt sätt. Dessutom kommer vi att använda IF , LARGE , INDEX , SUMPRODUCT , och ISNUMMER funktioner i denna formel.
- Till att börja med skriver du den här formeln i cellen C5 Du behöver bara ersätta cellreferensen baserat på din egen cell i kalkylbladet och genom att bädda in den här formeln får du det förväntade resultatet direkt. Och den här formeln fungerar perfekt i alla versioner av 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),"")
- Därefter måste du trycka på Gå in på först efter att du skrivit hela formeln och du är klar.
🔎 Fördelning av formler
Innan vi börjar analysera denna massiva & kompakta formel kan vi dela upp den i några delar som-
=IF(A>0, SUMPRODUCT(B 1 *C 1 , B 2 *C 2 , ..........B n C n ),"")
Denna syntax innebär att om A är större än 0, då är alla produkter av B n och C n kommer att summera till slutresultatet. Och om A inte är större än 0 så kommer resultatet att återges som en tom eller tom cell.
- 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),""
Uppdelning av 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"}, "")
- UTBYGGNING hittar alla siffror (0-9) en efter en i texten. 19 DDX2MN varje gång och ersätter dessa siffror med en tom sträng i de positioner där siffrorna finns.
- De resulterande värdena i en matris blir således {"19 DDX2MN", "9 DDX2MN", "19 DDXMN", "19 DDX2MN", "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 kommer nu att räkna antalet tecken i alla strängvärden som erhållits i föregående avsnitt. Funktionen kommer alltså att ge följande resultat: {9,8,8,8,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 den här delen av formeln är ett antal tecken i cellen B5 subtraherar alla de tal som hittats i det föregående avsnittet. De resulterande värdena blir då- {0,1,1,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 av SUMMA funktionen kommer värdena i matrisen från förra avsnittet att summera till 3 (0+1+1+1+0+0+0+0+0+0+0+0+0+0+1).
- Enligt den första delen av vår formel, A>0 (3>0) Nu går vi vidare till nästa del av uppdelningen.
Uppdelning av 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))
- INDIRECT funktionen här kommer att lagra strängvärdena som en referens till matrisen. Inom parentesen kommer ampersand (&) kommer att sammanföra antalet tecken som finns i cellen B5 med syntaxen Range of cells. Det innebär att från 1 till det definierade antalet tecken lagras varje tecken som en array-referens.
➤ ROW(INDIRECT("$1:$"&LEN(B5)))
- Nu, detta ROW funktionen tar fram alla siffror från matrisen och de resulterande värdena för cellen B5 kommer att vara- {1;2;3;4;4;5;6;7;8;9}.
➤ MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1)
- I denna del av formeln ska MID funktionen kommer att uttrycka alla tecken från cellen B5 baserat på alla positioner som hittats som nummer i det föregående avsnittet. De extraherade värdena kommer alltså att hittas efter denna del - {"1″; "9″;" "; "D"; "D"; "D"; "X"; "2″; "M"; "N"}.
➤ ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))
- Som ISNUMMER är en logisk funktion, den avgör individuellt om värdena i föregående avsnitt är siffersträngar eller ej. Om ja, återges TRUE , annars visas det som FALSK .
- I vårt fall blir resultatet alltså {TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE}.
➤ INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))*ROW(INDIRECT("$1:$"&LEN(B5))),0)
- Om du lägger märke till att det i ovanstående funktion finns ett dubbelhyphen, som kallas Dubbel Unary Den används för att omvandla alla logiska värden till siffersträngar. 1(TRUE) eller . 0(FALSK) . Nu är det INDEX funktionen ger detta resultat som- {1;1;1;0;0;0;0;0;0;1;0;0;0}.
- Därefter multipliceras de resulterande värdena med de värden som erhållits från ROW funktionen i matrisen och resultatet blir: {1;2;0;0;0;0;0;0;0;7;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 kommer nu att ordna om de största värdena från matrisen i enlighet med de positioner som baseras på de nummer som finns i ROW & våra resulterande värden för denna del av formeln blir- {7;2;1;0;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)
- Den här delen av funktionen kommer att sammanfoga 0 med texterna i cellen B5 Sedan läggs följande till 1 individuellt med alla de nummer som finns i det sista avsnittet och visa tecknen från B5 cellen utifrån de definierade nummerpositionerna.
- Vårt resultat från detta avsnitt blir alltså: {"2″; "9″; "1″; "0″; "0″; "0″; "0″; "0″; "0″; "0″; "0″; "0"}.
Uppdelning av del C = (10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),"")
- Denna del kommer att bestämma potenser av 10 & lagra dem i matrisen. Potensernas siffror är de siffror som hittats i ROW funktion tidigare.
- Den här delen av formeln kommer att återge värdena som- {1;10;100;1000;10000;100000;1000000;1000000;10000000;100000000}.
Multiplikation av B n och C n
- Nu multipliceras de resulterande värdena från de två sista stora sammanbrotten av B och C i matrisen, och de produkter som fås från multiplikationerna blir: {2;90;100;0;0;0;0;0;0;0;0;0;0;0}.
- Och slutligen, den SUMPRODUCT funktionen kommer att summera värdena i matrisen. Vårt slutresultat blir alltså 192 (2+90+100+0+0+0+0+0+0) , som är de utdragna siffrorna från cellen B5 .
Läs mer: Hur du separerar text och siffror i Excel (4 enkla sätt)
5. Extraktion av femsiffriga tal från en sträng
Vi kommer att använda en annan formel för att extrahera femsiffriga siffror från en del av en sträng i Excel. Vi använder formeln CONCAT och SEQUENCE Dessutom har vi ändrat vårt dataset något för denna metod.
Steg:
- Välj först cellområdet C5:C12 .
- För det andra skriver du följande formel.
=CONCAT(IFERROR(0+MID(B5,SEQUENCE(LEN(B5)),1),"""))
- Slutligen trycker du på Ctrl+Enter .
🔎 Fördelning av formler
- LEN(B5)
- Utgång: 11 .
- Den här funktionen returnerar strängens längd.
- SEKVENS(11)
- Output: {1;2;3;4;5;6;7;8;9;10;11} .
- Den här funktionen returnerar de första elva siffrorna.
- MID(B5,{1;2;3;4;5;6;7;8;9;10;11},1)
- Utgång: {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"; "3″; "3″} .
- Med den här delen hämtar vi de enskilda tecknen från strängen.
- 0+{"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"; "3″; "3″}
- Utgång: {1;9;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;2;#VALUE!;#VALUE!;#VALUE!;3;3} .
- När vi lägger till noll till en sträng kommer ett fel att uppstå.
- IFERROR({1;9;#VÄRDE!;#VÄRDE!;#VÄRDE!;#VÄRDE!;#VÄRDE!;#VÄRDE!;2;#VÄRDE!;#VÄRDE!;#VÄRDE!;3;3},"")
- Utgång: {1;9;"";"";"";"";"";2;"";"";"";3;3} .
- Vi får ett tomt värde för alla felvärden.
- CONCAT({1;9;"";"";"";"";"";2;"";"";"";3;3})
- Utfall: 19233 .
- Slutligen adderar vi alla värden för att få fram endast femsiffriga tal.
6. Använda Flash Fill för att extrahera siffror inom ett intervall
Användning av Flash Fill funktionen är enklare än alla andra metoder som nämns ovan. Vi ska extrahera siffror från vilken position som helst i textsträngarna. För att utföra den här metoden korrekt måste vi hjälpa Excel att hitta mönstret för cellvärdena i en kolumn eller rad genom att extrahera endast de två första värdena.
Steg:
- Till att börja med skriver du siffrorna manuellt i cellen C5 .
- Börja sedan skriva in siffrorna från cell B6 till cell C6 så känner Excel automatiskt igen mönstret.
- Slutligen trycker du på Gå in på .
Anteckningar: Den här metoden har vissa nackdelar, varför den inte rekommenderas i alla fall när du behöver extrahera siffror från textsträngar. Flash Fill följer vanligtvis ett mönster från cellerna i en kolumn eller ett intervall. Så de första två eller tre extraktionerna eller beräkningarna måste göras manuellt för att hjälpa Excel att ta till sig det gemensamma mönstret för de resulterande värdena. Men ibland följer det inte exakt det mönster vi behöver och därmed följer det sitt eget mönster och ger dig ett felmatchat resultat.
Om vi till exempel skulle extrahera två nollor (00) från de givna uppgifterna skulle den bara visa en nolla, inte två. Om du vill extrahera siffror från början eller slutet av en cell extraherar den också textvärden tillsammans med siffrorna.
Läs mer: Hur du extraherar siffror efter en viss text i Excel (2 lämpliga sätt)
7. Tillämpa VBA-kod för att extrahera endast siffror från Excel-cellen
Om du är intresserad av att använda Excel VBA-makro bara vill extrahera siffror från cellerna, då bör du följa stegen nedan. Vi visar dig hur du skriver koden i VBA-modul Koden ber användaren att ange inmatnings- och utdatacellområden.
Steg:
- För det första, tryck på ALT+F11 för att öppna VBA fönster.
- Sedan, från den Infoga Välj fliken Modul Ett nytt modulfönster visas där du skriver in koderna.
- För det tredje, klistra in följande koder i din modul efter att du kopierat.
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 = "Urval av indata" DBxName2 = "Urval av utdataceller" Set InBx1 = Application.InputBox("Ingångsintervall för textceller:", _ 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
- Därefter trycker du på F5 för att utföra koden. En dialogruta med namnet " Urval av indata " visas.
- Markera sedan alla textceller (dvs. B5:B12 ) och tryck på OK .
- Därefter visas en annan dialogruta med namnet " Val av utgångscell "visas där du måste välja en viss cell eller ett visst intervall av celler för att se utdata eller värden.
- Slutligen väljer du cellområdet C5:C12 och tryck på Gå in på .
- Du kommer alltså att se de extraherade siffrorna från texterna på en gång. Därmed avslutar vi de sju snabba metoderna för att extrahera siffror endast från Excel-celler.
🔎 Uppdelning av VBA-kod
➤ Deklarering av parametrar
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 = "Urval av indata" DBxName2 = "Urval av utdataceller"
- Här i den här delen deklarerar vi först alla våra parametrar som heltal, strängvärden eller cellintervall. Sedan anger vi namnen på våra dialogrutor med "Val av indata" och "Val av utgångscell" .
➤ Definiera typerna av ingångar & utgångar för dialogrutor
Set InBx1 = Application.InputBox("Inmatningsområde för textceller:", _ DBxName1, "", Type:=8) If TypeName(InBx1) = "Nothing" Then Exit Sub Set InBx2 = Application.InputBox("Välj utdataceller:", _ DBxName2, "", Type:=8) If TypeName(InBx2) = "Nothing" Then Exit Sub Iteration = 0 XtrNum = ""
- Nu definierar vi parametrarna och deras typer för dialogrutorna. Om du lägger till Type:=8 betyder det här att in- och utdata kommer att bestå av referensceller eller ett intervall av celler.
- Vi definierar också att om inga indata hittas kommer subrutinen att sluta. Genom att nämna detta makro kommer subrutinen inte att avbrytas på grund av att data saknas, utan den kommer snarare att sluta fungera.
➤ Kombinera funktionerna i koden Slingor för iterationer
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
- Sist av allt är detta den viktigaste delen där vi tillämpar de funktioner eller formler som vi måste tilldela texterna för att hitta de resulterande värdena från strängarna.
- En av de stora fördelarna med att koda en funktion för Excel är att det inte är nödvändigt att skriva en stor formel som vi var tvungna att göra i tidigare metoder, eftersom VBA har inbyggda kommandon för att använda For- eller While-slingor där iteration för varje detalj i en textsträng kan utföras utan problem.
Läs mer: Hur man separerar siffror från text i Excel VBA (3 metoder)
Slutsats
Vi har visat dig 7 enkla metoder för att endast utvinna siffror från en Excel-cell. Att bara extrahera siffror från en textsträng är inte så enkelt som det verkar eftersom det kräver en kombination av flera funktioner, vilket gör den slutliga formeln eller syntaxen komplicerad. Men vi hoppas att det sätt på vilket vi har försökt illustrera formlerna genom att dela upp de inre funktionerna har hjälpt dig att förstå syntaxen med lite större bekvämlighet och lätthet.
Om du hittar några andra funktioner eller formler som vi borde ha lagt till här, så låt oss veta det genom dina värdefulla kommentarer. Du kan också ta en titt på våra mer informativa och intressanta artiklar om Excel-funktioner på den här webbplatsen.