Sådan konverteres streng til tal i Excel VBA (3 metoder)

  • Del Dette
Hugh West

I denne artikel vil vi diskutere flere metoder til at konvertere streng til tal i Excel VBA. Vi vil se, hvordan du bruger de indbyggede funktioner og opretter en brugerdefineret funktion ved hjælp af dem til at konvertere streng til tal med VBA-kodeeksempler.

Download arbejdsbog til øvelser

Download denne arbejdsbog til træning, så du kan øve dig, mens du læser denne artikel.

Konverter streng til tal.xlsm

3 måder at konvertere streng til tal i Excel VBA på

1. Konverter streng til tal ved hjælp af typekonverteringsfunktioner

Excel indeholder flere indbyggede funktioner til konvertering af typer Vi kan bruge dem i vores VBA-kode til nemt at konvertere fra string-datatyper til forskellige datatyper.

1.1 Streng til heltal

For at konvertere streng til heltal , kan vi bruge CInt-funktion i vores kode. CInt-funktion tager kun et argument og det bør være en numerisk værdi Lad os prøve følgende kode i Visual Code Editor.

 Sub StringToNumber() MsgBox CInt(12.3) End Sub 

Tryk på F5 til køre kode . resultatet er vist i MsgBox .

CInt-funktionen konverteret numerisk streng værdi ("12.3" ) til en heltal 12.

For at forstå mere om den CInt-funktion , kør følgende kode i kodeeditoren og observere resultater .

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

output er her i følgende skærmbillede .

Kode Forklaring

I denne kode har vi brugt For...Næste loop til at anvende CInt-funktion på de strenge af celler B3:B7. udgange udskrives i celler C3:C7. Vi har brugt den Cellernes funktion for at angive inputværdierne og hvor outputværdierne skal udskrives.

Resultater

CInt-funktionen konverteret 25,5 til den næste heltal 26 . På den anden side er det konverteret 10.3 til 10, ikke 11 Når en decimalværdi er mindre end 0,5, runder funktionen ned til det samme tal. Men den decimal numerisk strengværdi bliver til den næste heltal nummer, hvis det er er lig med eller større end 0,5.

Bemærk

Den hele talværdi har et interval mellem -32,768 til 32,767 Hvis vi sætter en numerisk værdi, der er uden for dette område vil Excel vise en fejl .

1.2 String til lang

CLng-funktion konverterer en numerisk strengværdi til en lang datatype Den fungerer på samme måde som CInt-funktionen. Den væsentligste forskel ligger i dens rækkevidde som ligger mellem -2,147,483,648 og 2,147,483,647.

 Koden, der skal køres, er her nedenfor:  Sub StringToNumber() For i = 3 To 9 Cells(i, 3).Value = CLng(Cells(i, 2)) Next End Sub 

Her er cellerne B3:B9 indeholder nogle numerisk strengværdi , og konverteret l ong tal er i celler C3:C9. CLng-funktion konverteret -32800 og 32800 med succes til lange tal som den CInt-funktion ikke kunne. Men det vil også få en fejl hvis input numerisk værdi er uden for rækkevidde.

1.3 Streng til decimal

Brug af den CDec-funktion kan vi konvertere a numerisk strengværdi til en decimal datatype. Kør følgende kode til konvertere numeriske værdier i celler B3:B7 til den decimal datatype.

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

1.4 String til Single

I dette eksempel omdanner vi de indtastede strenge til enkelt datatype (enkeltpræcisions-flydepunkts) tal. Til dette formål skal vi bruge CSng-funktion .

Den enkelte datatype spænder- (i) -3,402823E38 til -1.401298E-45 til negativ numre.

(ii) 1.401298E-45 til 3.402823E38 til positiv numre.

Kør følgende kode i Visual Basic-editoren.

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

I output, celler B3:B9 indeholder nogle numerisk strengværdi, og konverterede enkelt datatype tal er i celler C3:C9. Men den får også en fejl hvis input numerisk værdi er uden for rækkevidde.

1.5 Streng til Dobbelt

I dette eksempel omdanner vi de indtastede strenge til dobbelt datatype (dobbelt præcision flydende tal). Til dette formål skal vi bruge CDbl-funktion .

Den dobbelte datatype spænder- (i) -1.797696931348623131E308 til -4.94065645841247E-324 til negativ numre.

(ii) 4.94065645841247E-324 til 1.79769313486232E308 til positiv numre.

Kør følgende kode i Visual Basic-editoren.

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

I output, celler B3:B9 indeholder nogle numerisk strengværdi og konverteret dobbelt datatype tal er i celler C3:C9. Men den får også en fejl hvis input numerisk værdi er uden for rækkevidde.

1.6 Streng til valuta

valutadatatype er praktisk, når beregningerne vedrører penge Hvis vi ønsker større nøjagtighed i rettet - punkt beregning er det et godt valg at bruge datatypen valuta. Vi skal bruge CCur-funktion til at konvertere en streng til en valutadatatype . datatypen intervaller fra -922,337,203,685,477.5808 til 922,337,203,685,477.5808.

Kode til konvertere numerisk strengværdi af celler B3:B7 til valutadatatype i celler C3:C7 er her nedenfor.

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

1.7 Streng til Byte

CByte-funktion konverterer numeriske strengværdier til den byte datatype som varierer fra 0 til 255.

Kode er som følger :

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

I output, celler B3:B9 indeholder nogle numerisk strengværdi, og konverterede byte-datatatype tal er i celler C3:C9. Men den får også en fejl hvis input numerisk værdi er uden for rækkevidde.

Læs mere: Sådan konverteres String til Long ved hjælp af VBA i Excel

Lignende læsninger

  • Konverter String til Double i Excel VBA (5 metoder)
  • Sådan konverteres tekst til tal med Excel VBA (3 eksempler med makroer)
  • Reparer fejl i Excel ved at konvertere til tal (6 metoder)
  • Sådan konverteres videnskabelig notation til tal i Excel (7 metoder)

2. Brug af brugerdefineret VBA-funktion til at kontrollere og konvertere streng til tal i Excel

I denne illustration vil vi lave en brugerdefineret funktion til konvertering af strenge til tal. Vi kan derefter bruge denne brugerdefineret funktion i vores arbejdsark som en indbygget funktion I dette eksempel bruger vi CInt-funktion til konvertere strenge til hele tal mens du opretter den brugerdefineret funktion. Vi kunne også bruge alle de andre funktioner beskrevet i metode 1 til at konvertere strenge til forskellige datatyper Følg nu nedenstående trin for at opnå dette.

Trin:

  • Her, i celler B3:B7, har vi nogle numeriske strengværdier.

  • Nu, i Visual Basic-editoren, kopi og indsætte følgende kode, og tryk derefter på Ctrl + S til redde
 Funktion StringToNumber(inputStr) Dim convertedNum As Variant If IsNumeric(inputStr) Then If IsEmpty(inputStr) Then If IsEmpty(inputStr) Then convertedNum = "-" Else convertedNum = CInt(inputStr) End If Else convertedNum = "-" End If StringToNumber = convertedNum End Function 
  • I celle C3 , begynde at skrive funktionsnavn ( StringToNumber ). Excel vil automatisk foreslå funktion til brug. Tryk på Tab-tasten for at indtaste funktionen.

  • Sæt den celle reference B3 som det eneste argument.

  • Tryk nu på Gå ind på efter lukning af parentesen.

  • Find den Håndtag til påfyldning på den nederste højre hjørne af celle C3 til anvende funktionen til celler C4:C7.

  • Det endelige output er de eftertragtede heltalstal fra stringværdierne.

3. VBA-kode til at konvertere et udvalgt område af celler til tal i Excel

I denne illustration konverterer vi en rækkevidde udvalgte celler der indeholder strengværdier til hele tal. Hvis en celle indeholder et ikke-numerisk værdi i den, vil resultatet være en streg (-) linje i stedet . Følg den trin :

  • Vælg celler B3:B6 der har numeriske strenge værdier og B7 som indeholder en ikke-numerisk

  • I den Visual Basic-editor kopi og indsætte følgende kode .
 Sub StringToNumber() Dim convertedNum As Variant For Each cell In Selection If IsNumeric(cell) Then If IsEmpty(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 
  • Tryk nu på F5 til køre output som vist i følgende skærmbillede .

Noter

  • Vi har brugt den isNumeric-funktionen i den 2. og 3. metoder i vores VBA-kode, der kontrollerer, om et udtryk kan konverteres til et tal.
  • metode 1 , brugte vi indbyggede funktioner (CInt, CDbl, CSng.....) til at konvertere numeriske strengværdier til numre . men hvis der er en ikke-numerisk værdi , vil den vise en fejl i forbindelse med mismatch .

Konklusion

Nu ved vi, hvordan man konverterer strengværdier til tal i Excel. Forhåbentlig vil det opmuntre dig til at bruge denne funktionalitet mere sikkert. Eventuelle spørgsmål eller forslag skal du ikke glemme at skrive i kommentarfeltet nedenfor.

Hugh West er en meget erfaren Excel-træner og analytiker med over 10 års erfaring i branchen. Han har en bachelorgrad i regnskab og finans og en kandidatgrad i Business Administration. Hugh har en passion for undervisning og har udviklet en unik undervisningstilgang, der er nem at følge og forstå. Hans ekspertviden om Excel har hjulpet tusindvis af studerende og fagfolk verden over med at forbedre deres færdigheder og udmærke sig i deres karriere. Gennem sin blog deler Hugh sin viden med verden og tilbyder gratis Excel-tutorials og onlinetræning for at hjælpe enkeltpersoner og virksomheder med at nå deres fulde potentiale.