Come convertire una stringa in un numero in Excel VBA (3 metodi)

  • Condividi Questo
Hugh West

In questo articolo, discuteremo diversi metodi per convertire una stringa in un numero in Excel VBA. Vedremo come utilizzare le funzioni integrate e come creare una funzione personalizzata per convertire una stringa in un numero con esempi di codice VBA.

Scarica il quaderno di esercizi

Scaricate questo quaderno di esercizi per esercitarvi durante la lettura di questo articolo.

Convertire stringa in numero.xlsm

3 modi per convertire una stringa in un numero in Excel VBA

1. Convertire una stringa in un numero utilizzando le funzioni di conversione di tipo

Excel mette a disposizione diversi strumenti integrati funzioni di conversione di tipo Possiamo utilizzarli nel nostro codice VBA per convertire facilmente il tipo di dati stringa in altri tipi di dati.

1.1 Da stringa a intero

Per convertire stringa a intero , possiamo utilizzare il metodo Funzione CInt nel nostro codice. Funzione CInt richiede solo un argomento e questo dovrebbe essere un valore numerico Proviamo il seguente codice nell'editor di codice visivo.

 Sub StringToNumber() MsgBox CInt(12.3) End Sub 

Stampa F5 a corsa il codice Il risultato è mostrato nella finestra MsgBox .

La funzione CInt convertito il stringa numerica valore ("12.3" ) ad un intero 12.

Per saperne di più sul Funzione CInt eseguire il seguente codice nell'editor di codice e osservare il risultati .

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

Il uscita è qui nel seguente schermata .

Codice Spiegazione

In questo codice, abbiamo usato il metodo Per...ciclo successivo per applicare il Funzione CInt sulle stringhe di cellule B3:B7. Il uscite sono stampati nelle celle C3:C7. Abbiamo utilizzato il Funzione delle cellule per specificare i valori di ingresso e dove stampare i valori di uscita.

Risultati

La funzione CInt convertito 25,5 al numero intero successivo 26 D'altra parte, è convertito 10.3 a 10, non 11 Quando un valore numerico decimale è inferiore a 0,5, la funzione arrotonda per difetto allo stesso numero. Ma la funzione decimale il valore numerico della stringa si trasforma nel valore intero successivo numero se è pari a o maggiore di .5.

Nota

Il valore intero ha un intervallo compreso tra -32,768 a 32,767 Se si inserisce un valore numerico che sia fuori da questo intervallo , Excel mostrerà un errore .

1.2 Da stringa a lungo

Il Funzione CLng converte un valore numerico di stringa in un valore tipo di dato long Funziona in modo simile alla funzione CInt. La differenza principale risiede nella funzione gamma che si trova tra -2,147,483,648 e 2,147,483,647.

 Il codice da eseguire è riportato di seguito:  Sub StringToNumber() For i = 3 To 9 Cells(i, 3).Value = CLng(Cells(i, 2)) Next End Sub 

Qui, le cellule B3:B9 contengono alcuni valore numerico della stringa , e convertito l numeri di telefono sono in celle C3:C9. Il Funzione CLng convertito -32800 e 32800 con successo a numeri lunghi che il Funzione CInt Ma otterrà anche un errore se l'ingresso valore numerico è fuori dal raggio d'azione.

1.3 Da stringa a decimale

Utilizzando il Funzione CDec possiamo convertire a valore numerico della stringa a un tipo di dato decimale. Esegui il seguente codice per convertire il valori numerici nelle cellule B3:B7 alla tipo di dato decimale.

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

1.4 Da stringa a singolo

In questo esempio, trasformeremo le stringhe di input in singolo tipo di dato (numeri a virgola mobile a singola precisione). A tal fine, è necessario utilizzare l'opzione Funzione CSng .

Il singolo tipo di dato ranges- (i) -3,402823E38 a -1.401298E-45 per negativo numeri.

(ii) 1.401298E-45 a 3.402823E38 per positivo numeri.

Eseguite il seguente codice nell'editor di Visual Basic.

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

Nell'output, le celle B3:B9 contengono alcuni valore numerico della stringa, e numeri convertiti di tipo singolo sono in celle C3:C9. Ma otterrà anche un errore se l'ingresso valore numerico è fuori dal raggio d'azione.

1.5 Da stringa a doppio

In questo esempio, trasformeremo le stringhe di input in tipo di dato double (numeri in virgola mobile a doppia precisione). A tal fine, è necessario utilizzare l'opzione Funzione CDbl .

Il tipo di dato double spazia- (i) -1,79769313486231E308 a -4.94065645841247E-324 per negativo numeri.

(ii) 4.94065645841247E-324 a 1.79769313486232E308 per positivo numeri.

Eseguite il seguente codice nell'editor di Visual Basic.

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

Nell'output, le celle B3:B9 contengono alcuni valore numerico della stringa e numeri convertiti di tipo double sono in celle C3:C9. Ma otterrà anche un errore se l'ingresso valore numerico è fuori dal raggio d'azione.

1.6 Da stringa a valuta

Il tipo di dati della valuta è utile quando i calcoli sono legati a denaro Inoltre, se vogliamo una maggiore precisione nel fisso - punto calcolo L'uso del tipo di dati currency è una buona scelta. Dobbiamo usare il metodo Funzione CCur per convertire una stringa in un elemento tipo di dati della valuta Il tipo di dati gamme da -922,337,203,685,477.5808 a 922,337,203,685,477.5808.

Codice a convertire valore numerico di stringa di cellule B3:B7 a tipo di dati della valuta nelle cellule C3:C7 è qui sotto.

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

1.7 Da stringa a byte

Il Funzione CByte converte i valori numerici delle stringhe nel formato tipo di dati byte che varia da Da 0 a 255.

Codice è la seguente :

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

Nell'output, le celle B3:B9 contengono alcuni valore numerico della stringa, e numeri di tipo byte convertiti sono in celle C3:C9. Ma otterrà anche un errore se l'ingresso valore numerico è fuori dal raggio d'azione.

Per saperne di più: Come convertire una stringa in un numero lungo utilizzando VBA in Excel

Letture simili

  • Convertire una stringa in un doppio in Excel VBA (5 metodi)
  • Come convertire un testo in un numero con Excel VBA (3 esempi con macro)
  • Correggere l'errore di conversione in numero in Excel (6 metodi)
  • Come convertire la notazione scientifica in numero in Excel (7 metodi)

2. Uso di una funzione VBA personalizzata per controllare e convertire una stringa in un numero in Excel

In questa illustrazione, faremo un'immagine di funzione personalizzata per convertire le stringhe in numeri. Possiamo quindi utilizzo questo funzione personalizzata nel nostro foglio di lavoro come un funzione integrata In questo esempio, si utilizzerà l'opzione Funzione CInt a convertire stringhe a numeri interi mentre si crea il file funzione personalizzata. Potremmo anche utilizzare tutte le altre funzioni descritto in metodo 1 per convertire corde a diversi tipi di dati A questo punto, seguite i passaggi seguenti per ottenere questo risultato.

Passi:

  • Qui, nelle cellule B3:B7, abbiamo alcuni valori numerici di stringa.

  • Ora, nell'editor di Visual Basic, copia e pasta il seguente codice e poi premere Ctrl + S a salvare
 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 
  • In cella C3 , iniziare a digitare il nome della funzione ( Da stringa a numero ). Excel suggerisce automaticamente il funzione da utilizzare. Stampa il Tasto Tab per accedere alla funzione.

  • Mettere il riferimento cella B3 come unico argomento.

  • Ora, premere Entrare dopo aver chiuso le parentesi.

  • Individuare il Maniglia di riempimento al angolo inferiore destro di cella C3 a applicare la funzione alle cellule C4:C7.

  • L'output finale è costituito dagli ambiti numeri interi dei valori delle stringhe.

3. Codice VBA per convertire un intervallo selezionato di celle in numeri in Excel

In questa illustrazione, convertiremo un file gamma di cellule selezionate contenenti valori stringa in numeri interi. Se una cella contiene un valore non numerico in esso, l'output sarà un trattino (-) linea invece . Segui il passi :

  • Selezionare le celle B3:B6 avendo stringhe numeriche e B7 che contiene un non numerico

  • Nel Editor Visual Basic copia e pasta il seguente codice .
 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 
  • Ora, premere F5 a corsa il uscita come mostrato di seguito schermata .

Note

  • Abbiamo utilizzato il Funzione isNumeric nel 2° e 3° metodi nel nostro codice VBA che controlla se un'espressione può essere convertita in un numero.
  • In metodo 1 abbiamo utilizzato le funzioni integrate (CInt, CDbl, CSng.....) per convertire i valori numerici in stringhe a numeri Ma se c'è un valore non numerico , mostrerà un errore di mancata corrispondenza .

Conclusione

Ora sappiamo come convertire i valori stringa in numeri in Excel. Speriamo che questo vi incoraggi a usare questa funzionalità con maggiore sicurezza. Per qualsiasi domanda o suggerimento, non dimenticate di inserirlo nella casella dei commenti qui sotto.

Hugh West è un istruttore e analista di Excel di grande esperienza con oltre 10 anni di esperienza nel settore. Ha conseguito una laurea in Contabilità e Finanza e un Master in Economia Aziendale. Hugh ha una passione per l'insegnamento e ha sviluppato un approccio didattico unico che è facile da seguire e capire. La sua conoscenza approfondita di Excel ha aiutato migliaia di studenti e professionisti in tutto il mondo a migliorare le proprie competenze ed eccellere nella propria carriera. Attraverso il suo blog, Hugh condivide le sue conoscenze con il mondo, offrendo esercitazioni gratuite su Excel e formazione online per aiutare le persone e le aziende a raggiungere il loro pieno potenziale.