Cum se convertește șirul în număr în Excel VBA (3 metode)

  • Imparte Asta
Hugh West

În acest articol, vom discuta mai multe metode de a converti șirul de caractere în număr în Excel VBA. Vom vedea cum să folosim funcțiile încorporate și cum să creăm o funcție personalizată folosind aceste funcții pentru a converti șirul de caractere în număr cu exemple de cod VBA.

Descărcați caietul de practică

Descărcați acest caiet de exerciții pentru a vă antrena în timp ce citiți acest articol.

Conversia șir de caractere în număr.xlsm

3 moduri de a converti un șir de caractere în număr în Excel VBA

1. Conversia șirurilor în numere utilizând funcțiile de conversie a tipurilor

Excel oferă mai multe instrumente încorporate funcții de conversie de tip Le putem utiliza în codul nostru VBA pentru a converti cu ușurință din tipul de date string în diferite tipuri de date.

1.1 De la șiruri de caractere la numere întregi

Pentru a converti șir de caractere la număr întreg , putem folosi Funcția CInt în codul nostru. Funcția CInt durează doar un argument și care ar trebui să fie un valoare numerică Să încercăm următorul cod în Visual Code Editor.

 Sub StringToNumber() MsgBox CInt(12.3) End Sub 

Apăsați F5 la rulează la cod Ieșirea este prezentată în fereastra MsgBox .

Funcția CInt transformat la șir numeric valoare ("12.3" ) la un număr întreg 12.

Pentru a înțelege mai multe despre Funcția CInt , rulați următorul cod în editorul de cod și observați la rezultate .

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

The ieșire este aici în următoarele captură de ecran .

Cod Explicație

În acest cod, am folosit Pentru...Următoarea buclă pentru a aplica Funcția CInt pe șirurile de celule B3:B7. The ieșiri sunt tipărite în celule C3:C7. Am folosit Funcția celulelor pentru a preciza valorile de intrare și unde se vor imprima valorile de ieșire.

Rezultate

Funcția CInt transformat 25,5 la următorul număr întreg 26 Pe de altă parte, este transformat 10.3 la 10, nu 11 Atunci când o valoare numerică zecimală este mai mică de 0,5, funcția rotunjește în jos la același număr. Dar funcția zecimal valoarea șirului numeric se transformă în următorul număr întreg număr dacă este egală cu sau mai mare de 0,5.

Notă

Valoarea întreagă are un interval cuprins între -32,768 la 32,767 Dacă punem o valoare numerică care este în afara acestui interval , Excel va afișa un eroare .

1.2 De la string la long

The Funcția CLng convertește o valoare de șir de caractere numerice într-un tip de date long Funcționează în mod similar cu funcția CInt. Diferența esențială constă în funcția gama care se află între -2,147,483,648 și 2,147,483,647.

 Codul de executat este aici mai jos:  Sub StringToNumber() For i = 3 To 9 Cells(i, 3).Value = CLng(Cells(i, 2)) Next End Sub 

Aici, celulele B3:B9 conțin unele valoare numerică de șir de caractere , și transformat l ong numere sunt în celule C3:C9. The Funcția CLng transformat -32800 și 32800 cu succes la numere lungi pe care Funcția CInt nu a putut. Dar va primi și un eroare în cazul în care intrarea valoare numerică este în afara intervalului.

1.3 De la șir de caractere la zecimale

Utilizarea Funcția CDec putem convertiți a valoare numerică de șir de caractere la un tip de date zecimale. Run următorul cod la convertiți la valori numerice în celule B3:B7 la tip de date zecimale.

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

1.4 String to Single

În acest exemplu, vom transforma șirurile de caractere de intrare în tip de date unic (numere în virgulă mobilă de precizie unică). Pentru aceasta, trebuie să folosim Funcția CSng .

Intervale de tip de date unice- (i) -3.402823E38 la -1.401298E-45 pentru negativ numere.

(ii) 1.401298E-45 la 3.402823E38 pentru pozitiv numere.

Rulați următorul cod în editorul Visual Basic.

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

În ieșire, celulele B3:B9 conțin unele valoare numerică de tip șir, și numere de tip de date simple convertite sunt în celule C3:C9. Dar va primi și un eroare în cazul în care intrarea valoare numerică este în afara intervalului.

1.5 String to Double

În acest exemplu, vom transforma șirurile de caractere de intrare în tip de date double (numere în virgulă mobilă de precizie dublă). Pentru aceasta, trebuie să folosim Funcția CDbl .

Tipul de date double variază între - (i) -1.7976931343486231E308 la -4.94065645841247E-324 pentru negativ numere.

(ii) 4.94065645841247E-324 la 1.79769313486232E308 pentru pozitiv numere.

Rulați următorul cod în editorul Visual Basic.

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

În ieșire, celulele B3:B9 conțin unele valoare numerică de șir de caractere și Numere convertite de tip de date double sunt în celule C3:C9. Dar va primi și un eroare în cazul în care intrarea valoare numerică este în afara intervalului.

1.6 De la șir de caractere la monedă

The tip de date valutare este la îndemână atunci când calculele sunt legate de bani În plus, dacă dorim mai multă precizie în fix - punct calcul , utilizarea tipului de date currency este o alegere bună. Trebuie să folosim tipul de date Funcția CCur pentru a converti un șir de caractere într-un tip de date valutare Tipul de date intervale de la -922,337,203,685,477.5808 la 922,337,203,685,477.5808.

Cod pentru convertiți valoare numerică șir de caractere de celule B3:B7 la tip de date valutare în celule C3:C7 este aici, mai jos.

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

1.7 De la șir la octet

The Funcția CByte convertește valorile numerice de tip șir de caractere în format tip de date byte care variază de la De la 0 la 255.

Cod este după cum urmează :

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

În ieșire, celulele B3:B9 conțin unele valoare numerică de tip șir, și numere convertite de tip byte sunt în celule C3:C9. Dar va primi și un eroare în cazul în care intrarea valoare numerică este în afara intervalului.

Citește mai mult: Cum se convertește șirul de caractere în lung utilizând VBA în Excel

Lecturi similare

  • Conversia șir de caractere în dublu în Excel VBA (5 metode)
  • Cum se convertește textul în număr cu Excel VBA (3 exemple cu macro-uri)
  • Corectarea erorii de conversie în numere în Excel (6 metode)
  • Cum să convertiți notația științifică în număr în Excel (7 metode)

2. Utilizarea funcției VBA personalizate pentru a verifica și a converti un șir de caractere în număr în Excel

În această ilustrație, vom face un funcție personalizată pentru convertirea șirurilor de caractere în numere. Putem apoi utilizați acest funcție personalizată în foaie de lucru ca un funcție încorporată În acest exemplu, vom folosi Funcția CInt la convertiți șiruri la numere întregi în timp ce se creează funcție personalizată. De asemenea, am putea folosi toate alte funcții descrise în metoda 1 pentru a converti șiruri la diferite tipuri de date Acum, urmați pașii de mai jos pentru a realiza acest lucru.

Pași:

  • Aici, în celule B3:B7, avem niște valori numerice de tip șir.

  • Acum, în editorul Visual Basic, copie și pastă următorul cod și apoi apăsați Ctrl + S la salvați
 Function 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 
  • În celulă C3 , începe să tastezi la numele funcției ( StringToNumber ). Excel va sugerează automat la funcția de utilizat. Apăsați la Tasta Tab pentru a introduce funcția.

  • Puneți referința celulei B3 ca unic argument.

  • Acum, apăsați Introduceți după închiderea parantezelor.

  • Localizați butonul Mâner de umplere la colțul din dreapta jos de celulă C3 la aplică funcția la celule C4:C7.

  • Rezultatul final este reprezentat de numerele întregi râvnite din valorile șirurilor de caractere.

3. Cod VBA pentru a converti o gamă selectată de celule în numere în Excel

În această ilustrație, vom converti un fișier gama de celule selectate care conțin valori de tip șir de caractere în numere întregi. Dacă o celulă conține un număr întreg nenumerice în el, rezultatul va fi un linie de liniuță (-) în schimb . Urmăriți etape :

  • Selectați celule B3:B6 având șiruri numerice valorile și B7 care conține un nenumerice

  • În Editor Visual Basic copie și pastă următoarele cod .
 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 
  • Acum, apăsați F5 la rulează la ieșire așa cum se arată în cele ce urmează captură de ecran .

Note

  • Am folosit Funcția isNumeric în 2 și 3 metode în codul nostru VBA care verifică dacă o expresie poate fi convertită într-un număr.
  • În metoda 1 , am folosit funcții integrate (CInt, CDbl, CSng.....) pentru a convertește valori numerice de tip șir de caractere la numere Dar dacă există un valoare nenumerică , se va afișa un eroare de neconcordanță .

Concluzie

Acum, știm cum să convertim valori de tip șir de caractere în numere în Excel. Sperăm că vă va încuraja să folosiți această funcționalitate cu mai multă încredere. Orice întrebări sau sugestii nu uitați să le puneți în caseta de comentarii de mai jos.

Hugh West este un trainer și analist Excel cu o experiență de peste 10 ani în industrie. Deține o diplomă de licență în contabilitate și finanțe și un master în administrarea afacerilor. Hugh are o pasiune pentru predare și a dezvoltat o abordare unică de predare care este ușor de urmărit și de înțeles. Cunoștințele sale experte despre Excel au ajutat mii de studenți și profesioniști din întreaga lume să-și îmbunătățească abilitățile și să exceleze în cariera lor. Prin blogul său, Hugh își împărtășește cunoștințele lumii, oferind tutoriale gratuite Excel și instruire online pentru a ajuta persoanele și companiile să-și atingă întregul potențial.