Hoe String naar een getal converteren in Excel VBA (3 methoden)

  • Deel Dit
Hugh West

In dit artikel bespreken we verschillende methoden om in Excel VBA een tekenreeks om te zetten in een getal. We zullen zien hoe we de ingebouwde functies kunnen gebruiken en hoe we een aangepaste functie kunnen maken om een tekenreeks om te zetten in een getal, met VBA-codevoorbeelden.

Download Praktijk Werkboek

Download dit oefenwerkboek om te oefenen terwijl u dit artikel leest.

String naar getal converteren.xlsm

3 manieren om in Excel VBA een string om te zetten in een getal

1. String naar getal converteren met behulp van functies voor typeconversie

Excel biedt verschillende ingebouwde functies voor typeconversie We kunnen ze gebruiken in onze VBA-code om gemakkelijk het datatype string te converteren naar verschillende datatypes.

1.1 String naar geheel getal

Om te converteren string naar geheel getal kunnen we de CInt functie in onze code. De CInt functie neemt alleen een argument en dat zou een numerieke waarde Laten we de volgende code proberen in de Visual Code Editor.

 Sub StringToNumber() MsgBox CInt(12.3) End Sub 

Druk op F5 naar ren de code De uitvoer wordt getoond in de MsgBox .

De CInt-functie omgebouwd de numerieke tekenreeks waarde ("12.3" ) naar een geheel getal 12.

Om meer te begrijpen over de CInt functie voer de volgende code uit in de code editor en observeren de resultaten .

 Sub StringToNumber() Voor i = 3 tot 7 Cells(i, 3).Value = CInt(Cells(i, 2)) Next End Sub 

De uitgang is hier in het volgende screenshot .

Code Uitleg

In deze code hebben we de Voor...Volgende lus om de CInt functie op de rijen cellen B3:B7. De uitgangen worden afgedrukt in cellen C3:C7. We gebruikten de Cellen functie om de invoerwaarden op te geven en waar de uitvoerwaarden moeten worden afgedrukt.

Resultaten

De CInt-functie omgerekend 25,5 aan de volgend geheel getal 26 Aan de andere kant omgerekend 10.3 naar 10, niet 11. Wanneer een decimale numerieke waarde kleiner is dan .5, rondt de functie naar beneden af op hetzelfde getal. Maar de decimaal numerieke stringwaarde verandert in de volgende geheel getal nummer als het gelijk aan of groter dan .5.

Opmerking

De gehele waarde heeft een bereik tussen -32,768 naar 32,767 Als we een numerieke waarde zetten die buiten dit bereik zal Excel een fout .

1.2 String naar Long

De CLng-functie converteert een numerieke tekenreekswaarde naar een lang datatype Hij werkt op dezelfde manier als de CInt-functie. Het belangrijkste verschil ligt in zijn reeks die tussen -2,147,483,648 en 2,147,483,647.

 De uit te voeren code staat hieronder:  Sub StringToNumber() Voor i = 3 tot 9 Cells(i, 3).Value = CLng(Cells(i, 2)) Next End Sub 

Hier, cellen B3:B9 bevatten enkele numerieke stringwaarde en omgebouwd l ong nummers zitten in cellen C3:C9. De CLng-functie omgebouwd -32800 en 32800 met succes naar lange nummers die de CInt functie kon niet. Maar het zal ook een fout als de invoer numerieke waarde is buiten bereik.

1.3 String naar Decimaal

Met behulp van de CDec-functie kunnen we omzetten a numerieke stringwaarde naar een decimaal datatype. Uitvoeren de volgende code naar omzetten de numerieke waarden in cellen B3:B7 aan de decimaal datatype.

 Sub StringToNumber() Voor i = 3 tot 7 Cells(i, 3).Value = CDec(Cells(i, 2)) Next End Sub 

1.4 String naar single

In dit voorbeeld zetten we de invoerstrings om in enkel datatype (single-precision floating-point) getallen. Hiervoor moeten we de CSng-functie .

Het enkele datatype ranges- (i) -3.402823E38 naar -1.401298E-45 voor negatief nummers.

(ii) 1.401298E-45 naar 3.402823E38 voor positief nummers.

Voer de volgende code uit in de visual basic editor.

 Sub StringToNumber() Voor i = 3 tot 7 Cells(i, 3).Value = CSng(Cells(i, 2)) Next End Sub 

In de uitvoer zijn de cellen B3:B9 bevatten enkele numerieke stringwaarde, en geconverteerde getallen van het enkele datatype zitten in cellen C3:C9. Maar het krijgt ook een fout als de invoer numerieke waarde is buiten bereik.

1.5 String naar dubbel

In dit voorbeeld zetten we de invoerstrings om in dubbel datatype (dubbele-precisie drijvende-kommagetallen). Hiervoor moeten we de CDbl-functie .

Het dubbele datatype ranges- (i) -1,79769313486231E308 naar -4.94065645841247E-324 voor negatief nummers.

(ii) 4.94065645841247E-324 naar 1.79769313486232E308 voor positief nummers.

Voer de volgende code uit in de visual basic editor.

 Sub StringToNumber() Voor i = 3 tot 7 Cells(i, 3).Value = CSng(Cells(i, 2)) Next End Sub 

In de uitvoer zijn de cellen B3:B9 bevatten enkele numerieke stringwaarde en geconverteerde getallen van het dubbele datatype zitten in cellen C3:C9. Maar het krijgt ook een fout als de invoer numerieke waarde is buiten bereik.

1.6 String naar valuta

De soort valuta is handig wanneer berekeningen betrekking hebben op geld Bovendien, als we meer nauwkeurigheid willen in vast - punt berekening is het gebruik van het valutatype een goede keuze. We moeten de CCur-functie om een string om te zetten in een soort valuta Het gegevenstype reeksen van -922,337,203,685,477.5808 naar 922,337,203,685,477.5808.

Code naar omzetten numerieke tekenreekswaarde van de cellen B3:B7 naar soort valuta in cellen C3:C7 is hier beneden.

 Sub StringToNumber() Voor i = 3 tot 7 Cells(i, 3).Value = CCur(Cells(i, 2)) Next End Sub 

1.7 String naar Byte

De CByte functie converteert numerieke stringwaarden naar de byte-gegevenstype die varieert van 0 tot 255.

Code is als volgt :

 Sub StringToNumber() Voor i = 3 tot 7 Cells(i, 3).Value = CByte(Cells(i, 2)) Next End Sub 

In de uitvoer zijn de cellen B3:B9 bevatten enkele numerieke stringwaarde, en geconverteerde getallen van het type byte zitten in cellen C3:C9. Maar het krijgt ook een fout als de invoer numerieke waarde is buiten bereik.

Lees meer: String omzetten naar lang met VBA in Excel

Vergelijkbare lezingen

  • String naar Double converteren in Excel VBA (5 methoden)
  • Tekst omzetten in een getal met Excel VBA (3 voorbeelden met macro's)
  • Fix Converteren naar getal fout in Excel (6 methoden)
  • Hoe wetenschappelijke notatie om te zetten naar een getal in Excel (7 methoden)

2. Gebruik van aangepaste VBA-functie om string te controleren en om te zetten naar getal in Excel

In deze illustratie maken we een aangepaste functie voor het omzetten van tekenreeksen naar getallen. We kunnen dan gebruik deze aangepaste functie in onze werkblad als een ingebouwde functie In dit voorbeeld gebruiken we de CInt functie naar omzetten snaren naar gehele getallen terwijl hij de aangepaste functie. We zouden ook alle andere functies beschreven in methode 1 om te zetten strings naar verschillende soorten gegevens Volg nu de onderstaande stappen om dit te bereiken.

Stappen:

  • Hier, in de cellen B3:B7, hebben we een aantal numerieke stringwaarden.

  • Nu, in de visual basic editor, kopie en pasta de volgende code en druk dan op Ctrl + S naar red
 Functie StringToNumber(inputStr) Dim convertedNum As Variant Als IsNumeric(inputStr) Dan Als IsEmpty(inputStr) Dan convertedNum = "-" Anders convertedNum = CInt(inputStr) End If Anders convertedNum = "-" End If StringToNumber = convertedNum End Function 
  • In de cel C3 , begin te typen de functienaam ( StringToNumber ). Excel zal stellen automatisch voor de functie om te gebruiken. Druk op de Tab-toets om de functie in te voeren.

  • Zet de celverwijzing B3 als enig argument.

  • Druk nu op Ga naar na het sluiten van de haakjes.

  • Zoek de Vulgreep aan de rechter benedenhoek van cel C3 naar pas toe de functie naar cellen C4:C7.

  • De uiteindelijke uitvoer zijn de begeerde gehele getallen van de stringwaarden.

3. VBA-code om een geselecteerd bereik van cellen om te zetten in getallen in Excel

In deze illustratie converteren we een reeks van geselecteerde cellen met tekenreeksen naar gehele getallen. Indien een cel een niet-numerieke waarde erin, zal de output een streepje (-) lijn in plaats daarvan Volg de stappen :

  • Selecteer cellen B3:B6 met numerieke reeksen waarden en B7 die een niet-numerieke

  • In de Visual Basic-editor kopie en pasta het volgende code .
 Sub StringToNumber() Dim convertedNum As Variant Voor Elke cel In Selectie Als IsNumeric(cel) Dan Als IsEmpty(cel) Dan convertedNum = "-" Anders convertedNum = CInt(cel) End If Anders convertedNum = "-" End If With cell .Value = convertedNum.HorizontalAlignment = xlCenter End With Volgende cel End Sub 
  • Druk nu op F5 naar ren de uitgang zoals blijkt uit het volgende screenshot .

Opmerkingen

  • We gebruikten de isNumerieke functie in de 2e en 3e methoden in onze VBA-code die controleert of een uitdrukking kan worden omgezet in een getal.
  • In methode 1 gebruikten we ingebouwde functies (CInt, CDbl, CSng.....) om numerieke tekenreeksen omzetten naar nummers Maar als er een niet-numerieke waarde zal het een foutieve aansluiting .

Conclusie

Nu weten we hoe we in Excel tekenreekswaarden kunnen omzetten naar getallen. Hopelijk stimuleert het u om deze functionaliteit met meer vertrouwen te gebruiken. Heeft u vragen of suggesties, vergeet ze dan niet in het commentaarveld hieronder te zetten.

Hugh West is een zeer ervaren Excel-trainer en -analist met meer dan 10 jaar ervaring in de branche. Hij heeft een bachelor in Accounting en Finance en een master in Business Administration. Hugh heeft een passie voor lesgeven en heeft een unieke lesaanpak ontwikkeld die gemakkelijk te volgen en te begrijpen is. Zijn deskundige kennis van Excel heeft duizenden studenten en professionals over de hele wereld geholpen hun vaardigheden te verbeteren en uit te blinken in hun carrière. Via zijn blog deelt Hugh zijn kennis met de wereld en biedt hij gratis Excel-tutorials en online trainingen aan om individuen en bedrijven te helpen hun volledige potentieel te bereiken.