Inhoudsopgave
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.xlsm3 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.