Hur man konverterar sträng till tal i Excel VBA (3 metoder)

  • Dela Detta
Hugh West

I den här artikeln diskuterar vi flera metoder för att konvertera sträng till tal i Excel VBA. Vi kommer att se hur du använder de inbyggda funktionerna och skapar en egen funktion med hjälp av dem för att konvertera sträng till tal med VBA-kodexempel.

Ladda ner övningsboken

Ladda ner den här arbetsboken för att träna medan du läser den här artikeln.

Konvertera sträng till tal.xlsm

3 sätt att konvertera sträng till tal i Excel VBA

1. Konvertera sträng till tal med hjälp av typkonverteringsfunktioner

Excel har flera inbyggda funktioner för typkonvertering Vi kan använda dem i vår VBA-kod för att enkelt konvertera från strängdatatyp till olika datatyper.

1.1 String till heltal

För att konvertera sträng till heltal , kan vi använda oss av CInt-funktion i vår kod. CInt-funktion tar endast ett argument och det bör vara en numeriskt värde Vi provar följande kod i Visual Code Editor.

 Sub StringToNumber() MsgBox CInt(12.3) End Sub 

Tryck på F5 till kör kod Resultatet visas i MsgBox .

Funktionen CInt konverterade numerisk sträng värde ("12.3" ) till en heltal 12.

För att förstå mer om CInt-funktion , kör följande kod i kodredigeraren och observera resultat .

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

Utgång finns här i följande skärmdump .

Kod Förklaring

I den här koden använde vi För...Nästa slinga för att tillämpa CInt-funktion på cellsträngarna B3:B7. utgångar skrivs ut i cellerna C3:C7. Vi använde oss av Cellernas funktion för att ange ingångsvärdena och var utskriftsvärdena ska skrivas ut.

Resultat

Funktionen CInt konverterade 25,5 till den Nästa heltal 26 . Å andra sidan är det omräknad 10.3 till 10, inte 11 När ett decimalt numeriskt värde är mindre än 0,5, avrundar funktionen nedåt till samma tal. decimal numeriskt strängvärde förvandlas till nästa heltal nummer om det är är lika med eller . större än 0,5.

Obs

Det heltaliga värdet har ett intervall mellan -32,768 till 32,767 Om vi anger ett numeriskt värde som är utanför detta område visar Excel en fel .

1.2 String till lång

CLng-funktion omvandlar ett numeriskt strängvärde till ett lång datatyp Den fungerar på samma sätt som CInt-funktionen. Den viktigaste skillnaden ligger i dess sortiment som ligger mellan -2,147,483,648 och 2,147,483,647.

 Koden som ska köras finns här nedan:  Sub StringToNumber() For i = 3 To 9 Cells(i, 3).Value = CLng(Cells(i, 2)) Next End Sub 

Här kan cellerna B3:B9 innehåller några numeriskt strängvärde , och konverterade l antal finns i celler C3:C9. CLng-funktion konverterade -32800 och 32800 framgångsrikt till långa tal som CInt-funktion inte kunde göra det. Men det kommer också att få en fel om den inmatade informationen numeriskt värde är utanför räckvidden.

1.3 Sträng till decimal

Användning av CDec-funktion kan vi konvertera a numeriskt strängvärde till en decimal datatyp. Kör följande kod till konvertera numeriska värden i celler B3:B7 till den decimal datatyp.

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

1.4 String till Single

I det här exemplet omvandlar vi inmatningssträngarna till en enda datatyp (flyttal med enkel precision). För detta behöver vi använda CSng-funktion .

Den enda datatypen varierar- (i) -3,402823E38 till -1.401298E-45 för negativ nummer.

(ii) 1.401298E-45 till 3.402823E38 för positiv nummer.

Kör följande kod i Visual Basic-redigeraren.

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

I utdata, celler B3:B9 innehåller några numeriskt strängvärde, och konverterade tal av enkel datatyp finns i celler C3:C9. Men den kommer också att få en fel om den inmatade informationen numeriskt värde är utanför räckvidden.

1.5 String till Double

I det här exemplet omvandlar vi inmatningssträngarna till dubbel datatyp (floating-point-tal med dubbel precision). För detta måste vi använda CDbl-funktion .

Den dubbla datatypen sträcker sig- (i) -1,7976931348623131E308 till -4.94065645841247E-324 för negativ nummer.

(ii) 4.94065645841247E-324 till 1.79769313486232E308 för positiv nummer.

Kör följande kod i Visual Basic-redigeraren.

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

I utdata, celler B3:B9 innehåller några numeriskt strängvärde och konverterade dubbel datatyp nummer finns i celler C3:C9. Men den kommer också att få en fel om den inmatade informationen numeriskt värde är utanför räckvidden.

1.6 String till valuta

datatyp för valuta är praktiskt när beräkningar är relaterade till pengar Om vi dessutom vill ha större noggrannhet i rättade - punkt beräkning är det ett bra val att använda datatypen valuta. Vi behöver använda CCur-funktion för att omvandla en sträng till en datatyp för valuta . Datatypen områden från -922,337,203,685,477.5808 till 922,337,203,685,477.5808.

Kod till konvertera numeriskt strängvärde av celler B3:B7 till datatyp för valuta i celler C3:C7 finns här nedan.

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

1.7 Sträng till byte

CByte-funktion omvandlar numeriska strängvärden till byte-datatyp som sträcker sig från 0 till 255.

Kod är följande :

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

I utdata, celler B3:B9 innehåller några numeriskt strängvärde, och konverterade byte-datatypnummer finns i celler C3:C9. Men den kommer också att få en fel om den inmatade informationen numeriskt värde är utanför räckvidden.

Läs mer: Hur man konverterar sträng till lång med hjälp av VBA i Excel

Liknande läsningar

  • Konvertera sträng till dubbel i Excel VBA (5 metoder)
  • Hur man konverterar text till tal med Excel VBA (3 exempel med makron)
  • Åtgärda felet med att konvertera till nummer i Excel (6 metoder)
  • Hur man konverterar vetenskaplig notation till tal i Excel (7 metoder)

2. Användning av anpassad VBA-funktion för att kontrollera och konvertera sträng till nummer i Excel

I den här illustrationen ska vi göra en anpassad funktion för att omvandla strängar till siffror. Vi kan sedan använda denna anpassad funktion i vår arbetsblad som en inbyggd funktion I det här exemplet använder vi CInt-funktion till konvertera strängar till heltal när du skapar den anpassad funktion. Vi kan också använda alla de andra funktioner som beskrivs i Metod 1 för att omvandla strängar till olika datatyper Följ stegen nedan för att göra detta.

Steg:

  • Här, i celler B3:B7, Vi har några numeriska strängvärden.

  • Nu, i Visual Basic-redigeraren, kopiera och pasta följande kod och tryck sedan på Ctrl + S till rädda
 Funktion StringToNumber(inputStr) Dim convertedNum As Variant If IsNumeric(inputStr) Then If IsEmpty(inputStr) Then convertedNum = "-" Else convertedNum = CInt(inputStr) End If Else convertedNum = "-" End If StringToNumber = convertedNum End Function 
  • I cell C3 , börja skriva funktionsnamn ( StringToNumber ). Excel kommer att automatiskt föreslå funktion att använda. Tryck på Flikarknappen för att komma in i funktionen.

  • Sätt in cellreferens B3 som det enda argumentet.

  • Tryck nu på Gå in på efter att ha stängt parentesen.

  • Leta upp Handtag för fyllning höger nedre hörn av cell C3 till tillämpa funktionen för celler C4:C7.

  • Det slutliga resultatet är de eftertraktade heltalstalen från strängvärdena.

3. VBA-kod för att konvertera ett valt cellområde till siffror i Excel

I den här illustrationen konverterar vi en sortiment utvalda celler som innehåller strängvärden till heltal. Om någon cell innehåller ett icke-numerisk värde i den, blir resultatet en streck (-) linje istället . Följ den steg :

  • Välj celler B3:B6 som har numeriska strängar värden och B7 som innehåller en icke-numerisk

  • I Redigerare för Visual Basic kopiera och pasta följande kod .
 Sub StringToNumber() Dim convertedNum As Variant For Each cell In Selection If IsNumeric(cell) Then If IsEmpty(cell) Then convertedNum = "-" Else convertedNum = CInt(cell) End If Else convertedNum = "-" End If With cell .Value = convertedNum.HorizontalAlignment = xlCenter End With Next cell End Sub 
  • Tryck nu på F5 till kör Utgång enligt följande skärmdump .

Anteckningar

  • Vi använde oss av funktionen isNumeric i den 2:a och 3:e metoder i vår VBA-kod som kontrollerar om ett uttryck kan omvandlas till ett tal.
  • Metod 1 Vi använde inbyggda funktioner (CInt, CDbl, CSng.....) för att konvertera numeriska strängvärden till nummer Men om det finns en icke-numeriskt värde visas en fel i matchningen .

Slutsats

Nu vet vi hur man konverterar strängvärden till siffror i Excel. Förhoppningsvis kan det uppmuntra dig att använda denna funktion på ett säkrare sätt. Om du har några frågor eller förslag, glöm inte att skriva dem i kommentarsfältet nedan.

Hugh West är en mycket erfaren Excel-tränare och analytiker med över 10 års erfarenhet i branschen. Han har en kandidatexamen i redovisning och ekonomi och en magisterexamen i företagsekonomi. Hugh har en passion för undervisning och har utvecklat ett unikt undervisningssätt som är lätt att följa och förstå. Hans expertkunskap om Excel har hjälpt tusentals studenter och yrkesverksamma över hela världen att förbättra sina färdigheter och utmärka sig i sina karriärer. Genom sin blogg delar Hugh med sig av sin kunskap med världen, och erbjuder gratis Excel-handledning och onlineutbildning för att hjälpa individer och företag att nå sin fulla potential.