Inhoudsopgave
Hoewel Microsoft geen rechte formule of syntaxis heeft voorzien om haal alleen getallen eruit van de Excel-cel, kunnen we een breed scala aan Excel-formules om een enkele functie te maken die kan worden gebruikt om alleen getallen of cijfers uit Excel-cellen te halen. In dit artikel zullen we proberen in detail te laten zien en uit te leggen hoe we met de juiste formules onder enkele criteria alleen getallen uit de cellen kunnen halen.
Download Praktijk Werkboek
Download gratis het oefenboek dat we hebben gebruikt om dit artikel voor te bereiden. U kunt de tekstwaarden met getallen invoeren in de geselecteerde cellen en de resultaten onmiddellijk vinden via ingesloten formules.
Nummers uit cellen halen.xlsm
7 effectieve manieren om alleen getallen uit Excel-cellen te halen
Er zijn één VBA-code, één Excel-functie en vijf praktische formules om u te helpen cijfers uit een cel te halen. Zoals in de onderstaande afbeelding hebben we enkele codes met cijfers en letters waar cijfers aan het begin staan. We moeten alleen die cijfers of getallen eruit halen.
1. Nummers uit het begin van een tekst halen
In deze eerste methode combineren we de LINKS , SUM , LEN en SUBSTITUTE functies om getallen uit het begin van een tekststring te halen. Eerst typen we deze formule in de cel, en dan, met behulp van de vulgreep kopiëren we die formule naar de rest van de cellen.
Stappen:
- Typ eerst de formule in cel C5 .
=LEFT(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0","1","2","3","4","5","6","7","8","9"},""))))
- Ten tweede, druk op Ga naar en je krijgt het nummer 34 voor de eerste code.
- Ten derde, gebruik de Vulgreep dan om alle andere cellen in de kolom automatisch in te vullen C .
🔎 Formuleverdeling
➤ SUBSTITUUT(B5,{"0","1","2","3","4","5","6","7","8","9"},"")
- Hier is de SUBSTITUTE functie zal de cijfers (0-9) opeenvolgend vinden en, indien gevonden, dat cijfer vervangen in cel B5 met telkens een leeg teken. Dus, de functie zal terugkomen als- {"34DTXRF","34DTXRF","34DTXRF","4DTXRF","3DTXRF","34DTXRF","34DTXRF","34DTXRF"}.
➤ LEN(SUBSTITUTE(B5,{"0″,"1″,"2″,"3″,"4″,"5″,"6″,"7″,"8″,"9″},""))
- De LEN functie bepaalt het aantal karakters in een string. Dus, hier, de LEN functie zal alle karakters tellen die individueel in de teksten voorkomen door de SUBSTITUTE functie. De resulterende waarden zijn hier in ons geval - {7,7,7,6,6,7,7,7,7,7}.
➤ LEN(B5)-LEN(SUBSTITUTE(B5,{"0″,"1″,"2″,"3″,"4″,"5″,"6″,"7″,"8″,"9″},"")))
- Nu, dit deel is de aftrekking van het aantal karakters in cel B5 aan alle andere aantallen karakters die afzonderlijk in het vorige deel van de formule zijn gevonden. Dus hier zullen de resulterende waarden zijn - {0,0,0,1,1,0,0,0,0,0}.
➤ SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0″,"1″,"2″,"3″,"4″,"5″,"6″,"7″,"8″,"9″},"")))
- De SUM functie zal dan gewoon alle afgetrokken waarden optellen die gevonden & dus het resultaat zal hier zijn, 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″},""))))
- En nu het laatste deel waar de LINKS functie zal de waarden teruggeven met een exact aantal karakters van links gevonden in het vorige deel van de formule. Aangezien we de somwaarde als 2 kregen, zal de LINKS functie hier zal alleen 34 uit de tekst 34DTXRF .
➥ Verwant: Cijfers scheiden in Excel met een formule (5 manieren)
2. Nummers uit de rechterkant van een tekst halen
In dit gedeelte halen we de getallen of cijfers uit de rechterkant van de tekststring. We gebruiken de RECHTS , MIN en ZOEKEN functies hier.
Stappen:
- Om te beginnen moeten we in onze dataset in cel C5 is-
=RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&"0123456789")) +1)
- Druk daarna op Ga naar en gebruik dan de Vulgreep om de rest van de cellen automatisch in te vullen.
🔎 Formuleverdeling
➤ B5&"0123456789
- Hier voegen we waarden samen in de B5 cel met 0123456789 door gebruik te maken van ampersand (&) en we krijgen de resulterende waarde als DTXRF340123456789.
➤ SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″)
- Nu, de ZOEKEN functie zal alle cijfers (0-9) één voor één zoeken in de resulterende waarde verkregen uit het vorige deel en de posities van die 10 cijfers teruggeven in de tekens van DTXRF340123456789 Dus, hier zullen onze resulterende waarden zijn- {8,9,10,6,7,13,14,15,16,17}.
➤ MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″))
- De MIN functie wordt gebruikt om het laagste cijfer of getal in een matrix te vinden. Dus, hier zal de minimale of laagste waarde zijn- 6 uit de matrix {8,9,10,6,7,13,14,15,16,17} die in het vorige deel van de formule is gevonden.
➤ LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&"0123456789″)) +1)
- Nu, het aantal karakters in B5 zal worden gevonden door de LEN functie. Dan trekt het de waarde 6 af (gevonden in de laatste sectie) en geeft het resultaat terug door 1 toe te voegen. In ons geval zal de resulterende waarde zijn 2 (7-6+1) .
➤ RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&"0123456789″)) +1)
- De RECHTS functie geeft het opgegeven aantal tekens terug van de laatste of rechterzijde van een string. Na het resultaat gevonden door het aftrekken in de vorige sectie, hier de RECHTS functie toont de laatste 2 karakters van cel B5 en dat zal 34 .
Lees meer: Cijfers scheiden in één cel in Excel (5 methoden)
3. Nummers uit een willekeurig deel van een tekstreeks halen
Nu, hier is een brede oplossing voor alle gevallen. Deze methode haalt getallen of cijfers uit elke positie in een tekststring. Bovendien gebruiken we het TEXTJOIN , IFERROR , INDIRECT , MID en ROW functies in deze methode.
Stappen:
- Typ eerst de formule in uw bestemmingscel als volgt-
=TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),""))
- Dan, als u Excel 2016 of hogere versie, druk dan op Ga naar druk anders op Ctrl+Shift+Enter om het resultaat te krijgen voor deze matrixformule.
- Na deze stap kunt u andere cellen automatisch invullen met behulp van de Vulgreep en je bent klaar.
🔎 Formuleverdeling
➤ INDIRECT("1:"&LEN(B5))
- De INDIRECT functie wordt gebruikt om een array van celwaarden op te slaan als een referentietekst. Hier is de ampersand (&) commando voegt de lengte van de karakters van cel B5 met onvolledige bereik syntaxis (1:) .
- Dus, hier de INDIRECT functie slaat alle getallen tussen 1 en de lengte van de tekens op in cel B5 als referentietekst.
➤ ROW(INDIRECT("1:"&LEN(B5)))
- De ROW functie vertelt meestal het rijnummer van een cel. Maar hier in de INDIRECT functie, aangezien er geen referentiecel is genoemd, in dit geval de ROW functie haalt alle waarden of getallen uit de referentieteksten die zijn opgeslagen in de INDIRECT functie.
- Nu, voor de 1e cel B5 de resulterende waarden door deze ROW en INDIRECT functies zullen zijn- {1;2;3;4;5;6;7;8;9}.
➤ (MID(B5,ROW(INDIRECT("1:"&LEN(B5)),1))
- De MID functie kunt u de tekens uit het midden van een tekststring bepalen, gegeven een startpositie & lengte.
- Dus, hier voor alle 9 posities die in de vorige sectie zijn gevonden, de MID functie zal nu alle tekens één voor één tonen voor elke positie & zal dus de waarden teruggeven als- {"1″;"9″;" ";"D";"X";"2″;"M";"N"}.
➤ IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),")
- Nu, de IFERROR is een logische functie die bepaalt of een tekenreeks een getal of iets anders is. Als het geen tekenreeks met getallen of cijfers identificeert, dan geeft het de waarde terug met een gedefinieerde tekstopdracht.
- In ons geval worden alle in de laatste sectie gevonden waarden met 1 vermenigvuldigd, en wanneer de resultaten worden teruggegeven als waardefouten voor letters of tekstwaarden die niet kunnen worden vermenigvuldigd, worden hun IFERROR functie zal de fouten omzetten in lege strings. Dus, onze resulterende waarden zullen dan zijn- {1;9;"";"";"";2;"";""}.
➤ =TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),""))
- En nu wordt het laatste deel uitgevoerd door de TEXTJOIN Deze functie wordt gebruikt om twee strings met een bepaald scheidingsteken aan elkaar te rijgen of samen te voegen.
- Dus de resulterende waarden die we in het vorige deel hebben gevonden, worden nu samengevoegd met dit TEXTJOIN functie. En zo krijgen we het getal... 192.
Lees meer: Hoe meerdere getallen uit een string in Excel te halen (6 methoden)
4. Meerdere functies nesten om alleen getallen naar voren te brengen
Nu zullen we u een andere formule laten zien om alleen getallen van een willekeurige positie uit een Excel-cel te halen. Hoewel het vrij complex lijkt, zullen we de hele formule opsplitsen en proberen alle compacte functies eenvoudig uit te leggen. Bovendien zullen we gebruik maken van het ALS , GROOT , INDEX , SUMPRODUCT en ISNUMMER functies in deze formule.
- Om te beginnen typt u deze formule in cel C5 U moet de celverwijzing alleen vervangen op basis van uw eigen cel in het spreadsheet en door deze formule in te sluiten, krijgt u meteen het verwachte resultaat. En deze formule werkt perfect in elke versie van 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),"")
- Daarna moet u op Ga naar pas na het intikken van de hele formule en je bent klaar.
🔎 Formuleverdeling
Alvorens te beginnen met de uitsplitsing van deze massieve & compacte formule, kunnen we het in enkele delen scheiden zoals-
=IF(A>0, SUMPRODUCT(B 1 *C 1 , B 2 *C 2 , ..........B n C n ),"")
Deze syntaxis betekent dat als A groter is dan 0, dan zijn alle producten van B n en C n zal het eindresultaat opleveren. En als A niet groter is dan 0 dan zal het resultaat een lege of lege cel zijn.
- A = SOM(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),""
Uitsplitsing van deel 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"}, "")
- De SUBSTITUTE functie vindt alle cijfers (0-9) één voor één in de tekst 19 DDX2MN elke keer en zal die cijfers vervangen door een lege tekenreeks op de posities van de cijfers.
- Zo zullen de resulterende waarden in een array zijn- {"19 DDX2MN","9 DDX2MN","19 DDXMN","19 DDX2MN","19 DDX2MN","19 DDX2MN","19 DDX2MN","1 DDX2MN"}.
➤ LEN(SUBSTITUTE(B5, {"0","1","2","3","4","5","6","7","8","9"}, "")
- De LEN functie zal nu het aantal karakters tellen in alle string-waarden verkregen uit de vorige sectie. Deze functie zal dus terugkomen als- {9,8,8,9,9,9,9,9,8}.
➤ LEN(B5)-LEN(SUBSTITUTE(B5, {"0″,"1″,"2″,"3″,"4″,"5″,"6″,"7″,"8″,"9"}, ""))
- In dit deel van de formule wordt een aantal tekens in cel B5 zal alle getallen uit de vorige sectie aftrekken. De resulterende waarden zijn dan {0,1,1,0,0,0,0,0,0,1}.
➤ SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0″,"1″,"2″,"3″,"4″,"5″,"6″,"7″,"8″,"9"}, ""))
- Met de hulp van de SUM functie, zullen de waarden in de array van de laatste sectie opgeteld 3 zijn (0+1+1+0+0+0+0+0+1).
- Dus, volgens het eerste deel van onze formule, A>0 (3>0) Nu gaan we naar het volgende deel van de uitsplitsing.
Indeling van deel 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))
- De INDIRECT functie hier zal de stringwaarden opslaan als een verwijzing naar de array. Binnen de haakjes, de ampersand (&) commando zal het aantal karakters in cel B5 Dit betekent dat van 1 tot het aantal gedefinieerde karakters, elk zal worden opgeslagen als een array-referentie.
➤ ROW(INDIRECT("$1:$"&LEN(B5)))
- Nu, dit ROW functie haalt alle getallen uit de matrix en de resulterende waarden voor cel B5 zal zijn- {1;2;3;4;5;6;7;8;9}.
➤ MID(B5,ROW(INDIRECT("$1:$"&LEN(B5)),1)
- In dit deel van de formule is de MID functie zal alle tekens van cel B5 gebaseerd op alle posities die in de vorige sectie als nummers zijn gevonden. Dus, de geëxtraheerde waarden zullen worden gevonden na dit deel- {"1";"9";" ";"D";"X";"2";"M";"N"}.
➤ ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5)),1))
- Als ISNUMMER is een logische functie, die individueel zal bepalen of de gevonden waarden in de voorgaande sectie getallenreeksen zijn of niet. Zo ja, dan zal het terugkeren als WARE anders wordt het weergegeven als FALSE .
- In ons geval zal het resultaat dus zijn- {TRUE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}.
➤ INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5)),1))*ROW(INDIRECT("$1:$"&LEN(B5)),0)
- Als u in de bovenstaande functie een dubbel koppelteken ziet, bekend als Dubbel Unair , is gebruikt. Het wordt gebruikt om alle logische waarden om te zetten in getalsteken. 1(TRUE) of 0(FALSE) Nu, de INDEX functie zal dit resultaat teruggeven als- {1;1;0;0;0;1;0;0}.
- Daarna worden de resulterende waarden vermenigvuldigd met de waarden verkregen uit de ROW functie in de array en het resultaat zal zijn- {1;2;0;0;0;7;0;0}.
➤ LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))*ROW(INDIRECT("$1:$"&LEN(B5)),0), ROW(INDIRECT("$1:$"&LEN(B5))))
- De GROOT functie zal nu de grootste waarden uit de array herschikken volgens de posities gebaseerd op de nummers gevonden in de ROW enamp; onze resulterende waarden voor dit deel van de formule zullen zijn- {7;2;1;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)
- Nu zal dit deel van de functie het volgende aan elkaar rijgen 0 met de teksten in cel B5 Dan zal het toevoegen 1 individueel met alle nummers uit de laatste sectie en laat de tekens zien van B5 cel op basis van de gedefinieerde nummerposities.
- Dus, onze uitkomst van deze sectie zal zijn- {"2";"9";"1";"0";"0";"0";"0";"0";"0"}.
Uitsplitsing van deel C = (10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),")
- Dit deel zal de machten van 10 & bepalen; sla ze op in de array. De cijfers van de machten zijn de getallen gevonden uit de ROW functie eerder.
- Dit deel van de formule zal de waarden opleveren als- {1;10;100;1000;10000;100000;1000000;10000000;100000000}.
Vermenigvuldiging van B n en C n
- De resulterende waarden van de laatste twee hoofdverdelingen van B en C worden nu binnen de matrix vermenigvuldigd. De producten van de vermenigvuldigingen zijn dan {2;90;100;0;0;0;0;0}.
- En tenslotte, de SUMPRODUCT functie zal deze waarden in de array optellen. Dus, ons eindresultaat zal zijn 192 (2+90+100+0+0+0+0+0+0) dat zijn de geëxtraheerde getallen uit cel B5 .
Lees meer: Tekst en cijfers scheiden in Excel (4 eenvoudige manieren)
5. Getallen van vijf cijfers uit een string halen
We zullen een andere formule gebruiken om getallen van vijf cijfers te extraheren uit een willekeurig deel van een tekenreeks in Excel. We gebruiken de formule CONCAT en SEQUENCE Bovendien hebben we onze dataset voor deze methode enigszins gewijzigd.
Stappen:
- Selecteer eerst het celbereik C5:C12 .
- Ten tweede, typ de volgende formule.
=CONCAT(IFERROR(0+MID(B5,SEQUENCE(LEN(B5)),1),""))
- Druk tenslotte op Ctrl+Enter .
🔎 Formuleverdeling
- LEN(B5)
- Uitgang: 11 .
- Deze functie geeft de lengte van de string.
- SEQUENCE(11)
- Output: {1;2;3;4;5;6;7;8;9;10;11} .
- Deze functie geeft de eerste elf getallen terug.
- MID(B5,{1;2;3;4;5;6;7;8;9;10;11},1)
- Uitvoer: {"1";"9";" ";"D";"X";"2";"M";"N";"3";"3"} .
- Met dit deel halen we de individuele karakters uit de string.
- 0+{"1";"9";" ";"D";"X";"2";"M";"N";"3";"3"}
- Output: {1;9;#VALUE!;#VALUE!;#VALUE!;2;#VALUE!;#VALUE!;3;3}. .
- Als we nul toevoegen aan een string, geeft dat een foutmelding.
- IFERROR({1;9;#VALUE!;#VALUE!;#VALUE!;2;#VALUE!;#VALUE!;3;3},"")
- Output: {1;9;"";"";"";2;"";"";3;3} .
- We krijgen niets voor alle foutwaarden.
- CONCAT({1;9;"";"";"";2;"";"";3;3})
- Output: 19233 .
- Tenslotte tellen we alle waarden op om er alleen getallen van vijf cijfers uit te halen.
6. Flash Fill gebruiken om getallen binnen een bereik te extraheren
Met behulp van de Flitsvulling Dit kenmerk is eenvoudiger en eenvoudiger dan alle andere hierboven genoemde methoden. We gaan getallen extraheren uit elke positie in de tekststrings. Om deze methode goed uit te voeren, moeten we Excel helpen het patroon van de celwaarden in een kolom of rij te vinden door alleen de eerste twee waarden te extraheren.
Stappen:
- Om te beginnen typt u de getallen handmatig in cel C5 .
- Begin dan met het typen van de getallen uit cel B6 naar cel C6 en Excel zal het patroon automatisch herkennen.
- Druk tenslotte op Ga naar .
Opmerkingen: Deze methode heeft enkele nadelen, en is daarom niet in alle gevallen aan te bevelen wanneer u getallen uit tekststrings moet halen. De Flitsvulling volgt gewoonlijk een patroon van de cellen in een kolom of een bereik. Dus moeten de eerste 2 of 3 extracties of berekeningen handmatig worden gedaan om Excel te helpen het gemeenschappelijke patroon van de resulterende waarden op te nemen. Maar soms volgt het niet het exacte patroon dat we nodig hebben en zal het dus zijn eigen patroon volgen en u een onjuist resultaat geven.
Als we bijvoorbeeld twee nullen (00) uit de gegeven gegevens moeten halen, zal het slechts één nul tonen, niet twee. En als je getallen wilt halen uit het begin of de laatste posities in een cel, zal het ook tekstwaarden halen, samen met de getallen.
Lees meer: Cijfers uitpakken na een specifieke tekst in Excel (2 geschikte manieren)
7. VBA-code toepassen om alleen getallen uit Excel-cellen te halen
Als u geïnteresseerd bent in het gebruik van de Excel VBA Macro om alleen getallen uit de cellen te halen, dan kunt u de onderstaande stappen volgen. Wij laten u zien hoe u de code in de VBA-module Deze code vraagt de gebruiker om de in- en uitvoercelbereiken op te geven.
Stappen:
- Ten eerste, druk op ALT+F11 om de VBA raam.
- Dan, van de Plaats tabblad, selecteer de Module Er verschijnt een nieuw modulevenster waarin u de codes typt.
- Ten derde, plak in uw module de volgende codes na het kopiëren.
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
- Druk daarna op F5 om de code uit te voeren. Een dialoogvenster met de naam " Selectie van invoergegevens " zal verschijnen.
- Selecteer vervolgens alle tekstcellen (d.w.z. B5:B12 ) en druk op OK .
- Daarna verschijnt een ander dialoogvenster met de naam " Uitgangscel Selectie " verschijnt waar u een bepaalde cel of een cellenbereik moet selecteren om de uitvoergegevens of -waarden te zien.
- Selecteer tenslotte het celbereik C5:C12 en druk op Ga naar .
- Bijgevolg ziet u de geëxtraheerde getallen uit de teksten in één keer. Zo eindigen we de zeven snelle methoden om getallen alleen uit Excel-cellen te extraheren.
🔎 VBA-code opsplitsing
➤ Parameters declareren
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".
- In dit deel declareren we eerst al onze parameters als gehele getallen, stringwaarden of reeksen cellen. Dan geven we de namen van onze dialoogvensters met "Input Data Selection" en "Output cell Selection" .
➤ De soorten ingangen en uitgangen voor dialoogvensters definiëren
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 definiëren we de parameters en hun types voor de dialoogvensters. Hier betekent het toevoegen van Type:=8 dat de invoer- en uitvoergegevens zullen bestaan uit referentiecellen of een cellenbereik.
- We definiëren ook dat de subroutine stopt als er geen invoergegevens worden gevonden. Door deze macro te vermelden, zal de subroutine niet afbreken bij ontbrekende gegevens, maar stoppen met functioneren.
➤ De functies binnen de code-lussen combineren voor Iteraties
Voor elke celwaarde in InBx1 Iteratie = Iteratie + 1 NumChar = Len(celwaarde) Voor StartChar = 1 tot NumChar Als IsNumeric(Mid(celwaarde, StartChar, 1)) Dan XtrNum = XtrNum & Mid(celwaarde, StartChar, 1) End If Next StartChar InBx2.Item(Iteratie) = XtrNum XtrNum = "" Volgende celwaarde End Sub
- Tenslotte is dit het meest cruciale deel waar we de functies of formules toepassen die we aan de teksten moeten toekennen om de resulterende waarden uit de strings te vinden.
- Een van de grote voordelen van het coderen van een functie voor Excel is dat het niet nodig is om een grote formule te typen zoals we bij eerdere methoden moesten doen, omdat VBA ingebouwde opdrachten heeft om For- of While-lussen te gebruiken waarbij iteratie voor elk detail in een tekststring kan worden uitgevoerd zonder gedoe.
Lees meer: Cijfers scheiden van tekst in Excel VBA (3 methoden)
Conclusie
Wij hebben u 7 eenvoudige methoden getoond om haal alleen getallen eruit Het extraheren van alleen getallen uit een tekststring is niet zo eenvoudig als het lijkt, omdat het een combinatie van meerdere functies vereist, wat de uiteindelijke formule of syntaxis ingewikkeld maakt. Maar we hopen dat de manier waarop we hebben geprobeerd de formules te illustreren door de interne functies op te splitsen, u heeft geholpen de syntaxis met een beetje gemak te begrijpen.
Als u andere functies of formules vindt die we hier hadden moeten toevoegen, laat het ons dan weten via uw waardevolle opmerkingen. Of u kunt een blik werpen op onze meer informatieve en interessante artikelen over Excel-functies op deze website.