Sommario
Anche se Microsoft non ha fornito una formula o una sintassi diretta per estrarre solo i numeri dalla cella di Excel, possiamo incorporare un'ampia gamma di Formule di Excel per creare un'unica funzione che possa essere utilizzata per estrarre solo numeri o cifre dalle celle di Excel. In questo articolo cercheremo di mostrare e spiegare in dettaglio come sia possibile estrarre solo numeri dalle celle con le formule appropriate in base ad alcuni criteri.
Scarica il quaderno di esercizi
Scaricate gratuitamente il libro di esercizi che abbiamo utilizzato per preparare questo articolo. Potete inserire i valori di testo con i numeri nelle celle selezionate e trovare immediatamente i risultati attraverso le formule incorporate.
Estrazione di numeri da celle.xlsm
7 modi efficaci per estrarre solo i numeri dalla cella di Excel
Ci saranno un codice VBA, una funzione di Excel e cinque formule pratiche che vi aiuteranno a estrarre i numeri da una cella. Come nell'immagine sottostante, abbiamo alcuni codici che includono cifre e lettere in cui le cifre sono presenti all'inizio. Dobbiamo estrarre solo le cifre o i numeri.
1. Estrarre i numeri dall'inizio di un testo
In questo primo metodo, combineremo il SINISTRA , SOMMA , LEN , e SOSTITUTIVO per estrarre i numeri dall'inizio di una stringa di testo. Per prima cosa, digitiamo questa formula nella cella e poi, utilizzando la funzione la maniglia di riempimento copieremo la formula nelle altre celle.
Passi:
- Per prima cosa, digitare la formula nella cella C5 .
=LEFT(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0","1","2","3","4","5","6","7","8","9"},""))))
- In secondo luogo, premere Entrare e si otterrà il numero 34 per il primo codice.
- In terzo luogo, utilizzare l'opzione Maniglia di riempimento poi per riempire automaticamente tutte le altre celle della colonna C .
🔎 Ripartizione della formula
➤ SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},")
- Qui, il SOSTITUTIVO trova le cifre (0-9) consecutivamente e, se le trova, le sostituisce nella cella B5 con un carattere vuoto ogni volta. Quindi, la funzione restituirà {"34DTXRF", "34DTXRF", "34DTXRF", "4DTXRF", "3DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF"}.
➤ LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},")
- Il LEN determina il numero di caratteri di una stringa. Quindi, in questo caso, la funzione LEN La funzione conterà tutti i caratteri trovati singolarmente nei testi attraverso l'opzione SOSTITUTIVO I valori risultanti saranno, nel nostro caso, {7,7,7,6,6,7,7,7,7,7,7,7}.
➤ LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"))
- Ora, questa parte è la sottrazione dal numero di caratteri nella cella B5 a tutti gli altri numeri di caratteri trovati singolarmente nella sezione precedente della formula. Quindi, in questo caso i valori risultanti saranno - {0,0,0,1,1,0,0,0,0,0}.
➤ SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"))
- Il SOMMA la funzione si limiterà a sommare tutti i valori sottratti trovati & quindi il risultato sarà qui, 2 (0+0+0+1+1+0+0+0+0+0).
➤ =SINISTRA(B5,SOMMA(LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},""))))
- Ed ecco la parte finale in cui la SINISTRA restituirà i valori con un numero esatto di caratteri da sinistra trovati nella sezione precedente della formula. Poiché il valore della somma è 2, la funzione SINISTRA restituirà solo la funzione 34 dal testo 34DTXRF .
➥ Correlato: Come separare i numeri in Excel usando la formula (5 modi)
2. Estrazione di numeri dal lato destro di un testo
In questa sezione, estrarremo i numeri o le cifre dal lato destro della stringa di testo. Utilizzeremo il metodo DIRITTO , MIN , e RICERCA funzioni qui.
Passi:
- Per cominciare, nel nostro set di dati ciò che dobbiamo digitare nella cella C5 è-
=RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789")) +1)
- Successivamente, premere Entrare e poi utilizzare il comando Maniglia di riempimento per riempire automaticamente il resto delle celle.
🔎 Ripartizione della formula
➤ B5& "0123456789″.
- Qui, stiamo concatenando i valori nella cartella B5 cella con 0123456789 utilizzando ampersand (&) e otterremo il valore risultante come DTXRF340123456789.
➤ SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″)
- Ora, il RICERCA cercherà tutte le cifre (0-9) una per una nel valore risultante ottenuto dalla sezione precedente e restituirà le posizioni di queste 10 cifre nei caratteri di DTXRF340123456789 Quindi i valori risultanti saranno: {8,9,10,6,7,13,14,15,16,17}.
➤ MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″))
- Il MIN viene utilizzata per trovare la cifra o il numero più basso in una matrice. Quindi, in questo caso il valore minimo o più basso sarà-. 6 dalla matrice {8,9,10,6,7,13,14,15,16,17} trovata nella sezione precedente della formula.
➤ LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789″)) +1)
- Ora, il numero di caratteri in B5 sarà trovato dal programma LEN Quindi sottrarrà il valore 6 (trovato nell'ultima sezione) e restituirà il risultato aggiungendo 1. Nel nostro caso, il valore risultante sarà 2 (7-6+1) .
➤ RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789″)) +1)
- Il DIRITTO restituirà il numero di caratteri specificato dall'ultimo o dal lato destro di una stringa. Seguendo il risultato trovato attraverso il processo di sottrazione nella sezione precedente, qui la funzione DIRITTO mostra gli ultimi 2 caratteri della cella B5 e questo sarà 34 .
Per saperne di più: Come separare i numeri in una cella in Excel (5 metodi)
3. Estrazione di numeri da qualsiasi parte di una stringa di testo
Ecco una soluzione ampia per tutti i casi. Questo metodo estrarrà numeri o cifre da qualsiasi posizione in una stringa di testo. Inoltre, utilizzeremo il metodo TESTO , IFERRORE , INDIRETTO , MID e FILO in questo metodo.
Passi:
- Per prima cosa, digitare la formula nella cella di destinazione come segue.
=TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5)),1)*1),"))
- Quindi, se si utilizza Excel 2016 o versione superiore, quindi premere Entrare altrimenti premere Ctrl+Maiusc+Invio per ottenere il risultato della formula della matrice.
- Dopo questo passaggio, è possibile riempire automaticamente le altre celle utilizzando l'opzione Maniglia di riempimento e il gioco è fatto.
🔎 Ripartizione della formula
➤ INDIRETTO("1:"&LEN(B5))
- Il INDIRETTO viene utilizzata per memorizzare una matrice di valori di celle come testo di riferimento. In questo caso l'ampersand (&) concatena la lunghezza dei caratteri della cella B5 con una sintassi incompleta dell'intervallo (1:) .
- Quindi, qui il INDIRETTO memorizzerà tutti i numeri compresi tra 1 e la lunghezza dei caratteri nella cella B5 come testo di riferimento.
➤ ROW(INDIRECT("1:"&LEN(B5)))
- Il FILO di solito indica il numero di riga di una cella, ma in questo caso la funzione INDIRETTO poiché non è stata menzionata alcuna cella di riferimento, in questo caso, la cella FILO estrarrà tutti i valori o i numeri dai testi di riferimento memorizzati nel file INDIRETTO funzione.
- Ora, per la prima cella B5 , i valori risultanti attraverso questi FILO e INDIRETTO le funzioni saranno: {1;2;3;4;5;6;7;8;9}.
➤ [MID(B5,ROW(INDIRECT("1:"&LEN(B5)),1)])
- Il MID consente di determinare i caratteri del centro di una stringa di testo, data una posizione iniziale e una lunghezza.
- Quindi, in questo caso, per tutte le 9 posizioni individuate nella sezione precedente, la MID Ora la funzione mostrerà tutti i caratteri uno per uno per ogni posizione & quindi restituirà i valori come: {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"}.
➤ IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5)),1)*1),")
- Ora, il IFERRORE è una funzione logica che determina se una stringa è un numero o qualcos'altro. Se non identifica una stringa con numeri o cifre, restituisce il valore con un comando di testo definito.
- Nel nostro caso, tutti i valori trovati nell'ultima sezione saranno moltiplicati per 1 e quando i risultati vengono restituiti come errori di valore per lettere o valori di testo che non possono essere moltiplicati, il loro IFERRORE La funzione convertirà gli errori in stringhe vuote. I valori risultanti saranno quindi {1;9;"";"";"";"";""; 2;"";""}.
➤ =TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5)),1)*1),"))
- E ora la parte finale sarà eseguita attraverso il metodo TESTO Questa funzione viene utilizzata per concatenare o unire due stringhe con un delimitatore specificato.
- Quindi, i valori risultanti trovati nella sezione precedente saranno ora uniti insieme a questo TESTO E quindi otterremo il numero 192.
Per saperne di più: Come estrarre più numeri da una stringa in Excel (6 metodi)
4. Nidificare più funzioni per ottenere solo numeri
Ora vi mostreremo un'altra formula per estrarre solo numeri da qualsiasi posizione di una cella di Excel. Anche se può sembrare piuttosto complessa, scomporremo l'intera formula e cercheremo di spiegare tutte le funzioni compatte con facilità. Inoltre, utilizzeremo la funzione SE , GRANDE , INDICE , SUMPRODOTTO , e ISNUMERO in questa formula.
- Per iniziare, digitate questa formula nella cella C5 Dovete sostituire il riferimento alla cella solo in base alla vostra cella nel foglio di calcolo e poi, incorporando questa formula, otterrete subito il risultato atteso. E questa formula funziona perfettamente in qualsiasi versione di Excel.
=IF(SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0","1","2","3","4","5","6","7","8","9"}, "")))>0, SUMPRODUCT(MID(0&B5, LARGE(INDEX(ISNUMBER(--MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))* ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1) * 10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),"")
- Dopodiché, è necessario premere Entrare solo dopo aver digitato l'intera formula e il gioco è fatto.
🔎 Ripartizione della formula
Prima di iniziare la scomposizione di questa formula massiccia e compatta, possiamo separarla in alcune parti come...
=IF(A>0, SUMPRODOTTO(B 1 *C 1 , B 2 *C 2 , ..........B n C n ),"")
Questa sintassi significa che se A è maggiore di 0, allora tutti i prodotti di B n e C n si sommano per ottenere il risultato finale. E se A non è maggiore di 0, il risultato sarà una cella vuota o bianca.
- A = SOMMA(LEN(B5)-LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, ""
- B = MID(0&B5, LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5)),1))* ROW(INDIRECT("$1:$"&LEN(B5)),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1)
- C = 10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),""
Ripartizione della Parte A = SOMMA(LEN(B5)-LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, ""
➤ SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, "")
- Il SOSTITUTIVO La funzione troverà tutte le cifre (0-9), una per una, nel testo 19 DDX2MN ogni volta e sostituirà le cifre con una stringa vuota nelle posizioni delle cifre.
- I valori risultanti in una matrice saranno quindi: {"19 DDX2MN", "9 DDX2MN", "19 DDXMN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "1 DDX2MN"}.
➤ LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, ""))
- Il LEN conterà ora il numero di caratteri in tutti i valori delle stringhe ottenuti nella sezione precedente. Quindi, questa funzione restituirà {9,8,8,9,9,9,9,9,9,8}.
➤ LEN(B5)-LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, ""))
- Ora, in questa parte della formula, un certo numero di caratteri nella cella B5 sottrarrà tutti i numeri trovati nella sezione precedente. I valori risultanti saranno quindi: {0,1,1,0,0,0,0,0,1}.
➤ SOMMA(LEN(B5)-LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9"}, ""))
- Con l'aiuto del SOMMA i valori all'interno dell'array trovato nell'ultima sezione si sommano a 3 (0+1+1+0+0+0+0+0+0+0+1).
- Quindi, secondo la prima parte della nostra formula, A>0 (3>0) Passiamo ora alla parte successiva della scomposizione.
Ripartizione della Parte B = MID(0&B5, LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5)),1))* ROW(INDIRECT("$1:$"&LEN(B5)),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1)
➤ INDIRETTO("$1:$"&LEN(B5))
- Il INDIRETTO memorizzerà i valori delle stringhe come riferimento all'array. All'interno della parentesi, la virgola (&) si unirà al numero di caratteri trovati nella cella B5 con la sintassi dell'intervallo di celle. Significa che da 1 al numero di caratteri definiti, ognuno di essi verrà memorizzato come riferimento a una matrice.
➤ ROW(INDIRECT("$1:$"&LEN(B5))
- Ora, questo FILO estrae tutti i numeri dall'array e i valori risultanti per la cella B5 sarà: {1;2;3;4;5;6;7;8;9}.
➤ MID(B5,ROW(INDIRECT("$1:$"&LEN(B5)),1)
- In questa parte della formula, il MID esprimerà tutti i caratteri della cella B5 basandosi su tutte le posizioni trovate come numeri nella sezione precedente. Quindi, i valori estratti saranno trovati dopo questa parte: {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"}.
➤ ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5)),1))
- Come ISNUMERO è una funzione logica, che determinerà singolarmente se i valori trovati nella sezione precedente sono stringhe di numeri o no. Se sì, allora restituirà come VERO altrimenti verrà visualizzato come FALSO .
- Quindi, nel nostro caso, il risultato sarà: {VERO; VERO; FALSO; FALSO; FALSO; FALSO; VERO; FALSO; FALSO; FALSO}.
➤ INDICE(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5)),1))*ROW(INDIRECT("$1:$"&LEN(B5)),0)
- Se si nota che all'interno della funzione di cui sopra, un doppio trattino, noto come Doppio unario Viene utilizzato per convertire tutti i valori logici in stringhe numeriche. 1(VERO) o 0(FALSO) Ora, il INDICE restituirà il risultato come {1;1;0;0;0;0;1;0;0}.
- In seguito, i valori risultanti saranno moltiplicati per i valori ottenuti dal FILO all'interno dell'array e il risultato sarà {1;2;0;0;0;0;7;0;0}.
➤ LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5)),1))*ROW(INDIRECT("$1:$"&LEN(B5)),0), ROW(INDIRECT("$1:$"&LEN(B5))))
- Il GRANDE riorganizzerà ora i valori più grandi dell'array secondo le posizioni basate sui numeri trovati nell'array FILO eamp; i valori risultanti per questa sezione della formula saranno: {7;2;1;0;0;0;0;0;0;0}.
➤ MID(0&B5, LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5)),1))*ROW(INDIRECT("$1:$"&LEN(B5)),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1)
- Ora, questa parte della funzione concatenerà 0 con i testi nella cella B5 . Poi aggiungerà 1 singolarmente con tutti i numeri trovati nell'ultima sezione e mostrare i caratteri da B5 in base alle posizioni numeriche definite.
- Quindi, il risultato di questa sezione sarà: {"2″; "9″; "1″; "0″; "0″; "0″; "0″; "0″; "0"}.
Ripartizione della Parte C = (10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),")
- Questa parte determinerà le potenze di 10 & le memorizzerà all'interno dell'array. Le cifre delle potenze sono i numeri trovati dal FILO funzione in precedenza.
- Questa parte della formula restituirà i valori {1;10;100;1000;10000;100000;1000000;10000000;100000000}.
Moltiplicazione di B n e C n
- Ora, i valori risultanti dalle ultime due scomposizioni principali di B e C saranno moltiplicati all'interno della matrice. Quindi i prodotti trovati dalle moltiplicazioni saranno: {2;90;100;0;0;0;0;0;0}.
- E infine, il SUMPRODOTTO somma i valori trovati nell'array. Quindi, il risultato finale sarà 192 (2+90+100+0+0+0+0+0+0) , che è il numero estratto dalla cella B5 .
Per saperne di più: Come separare testo e numeri in Excel (4 modi semplici)
5. Estrazione di numeri a cinque cifre da una stringa
Utilizzeremo un'altra formula per estrarre numeri a cinque cifre da qualsiasi parte di una stringa in Excel. Utilizzeremo la formula CONCAT e SEQUENZA Per la prima volta in questa sezione, inoltre, abbiamo modificato leggermente il nostro set di dati per questo metodo.
Passi:
- Innanzitutto, selezionare l'intervallo di celle C5:C12 .
- In secondo luogo, digitare la seguente formula.
=CONCAT(IFERROR(0+MID(B5,SEQUENZA(LEN(B5)),1),"))
- Infine, premere Ctrl+Invio .
🔎 Ripartizione della formula
- LEN(B5)
- Uscita: 11 .
- Questa funzione restituisce la lunghezza della stringa.
- SEQUENZA(11)
- Output: {1;2;3;4;5;6;7;8;9;10;11} .
- Questa funzione restituisce i primi undici numeri.
- MID(B5,{1;2;3;4;5;6;7;8;9;10;11},1)
- Uscita: {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"; "3″; "3″} .
- Con questa parte si ottengono i singoli caratteri della stringa.
- 0+{{"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"; "3″; "3″}
- Uscita: {1;9;#VALORE!;#VALORE!;#VALORE!;#VALORE!;2;#VALORE!;#VALORE!;3;3} .
- Quando si aggiunge lo zero a una stringa, viene restituito un errore.
- IFERROR({1;9;#VALORE!;#VALORE!;#VALORE!;#VALORE!;2;#VALORE!;#VALORE!;3;3},")
- Uscita: {1;9;"";"";"";"";""; 2;"";""; 3;3} .
- Tutti i valori di errore sono vuoti.
- CONCAT({1;9;"";"";"";"";2;"";"";3;3})
- Uscita: 19233 .
- Infine, sommiamo tutti i valori per estrarre solo numeri a cinque cifre.
6. Utilizzo del riempimento flash per estrarre numeri all'interno di un intervallo
Utilizzo il Riempimento flash La funzione è più facile e semplice di qualsiasi altro metodo menzionato in precedenza. Estrarremo i numeri da qualsiasi posizione nelle stringhe di testo. Per eseguire correttamente questo metodo, dobbiamo aiutare Excel a trovare lo schema dei valori delle celle in una colonna o in una riga, eseguendo l'estrazione solo per i primi due valori.
Passi:
- Per iniziare, digitare manualmente i numeri nella cella C5 .
- Quindi, iniziare a digitare i numeri dalla cella B6 alla cella C6 ed Excel riconoscerà automaticamente il modello.
- Infine, premere Entrare .
Note: Questo metodo presenta alcuni svantaggi, per cui non è consigliato in tutti i casi in cui è necessario estrarre numeri da stringhe di testo. Il metodo Riempimento flash di solito segue uno schema dalle celle di una colonna o di un intervallo. Quindi, le prime 2 o 3 estrazioni o calcoli devono essere eseguiti manualmente per aiutare Excel ad assorbire lo schema comune dei valori risultanti. A volte, però, non segue lo schema esatto di cui abbiamo bisogno e, quindi, seguirà il proprio schema e darà un risultato non corrispondente.
Ad esempio, se dovessimo estrarre due zeri (00) dai dati forniti, mostrerebbe solo uno zero, non due. Se poi si vogliono estrarre numeri dall'inizio o dalle ultime posizioni di una cella, estrarrà anche i valori del testo, insieme ai numeri.
Per saperne di più: Come estrarre i numeri dopo un testo specifico in Excel (2 modi adatti)
7. Applicazione del codice VBA per estrarre solo i numeri dalla cella di Excel
Se si è interessati a utilizzare il programma Macro VBA di Excel per estrarre solo i numeri dalle celle, allora seguite i passaggi seguenti. Vi mostreremo come digitare il codice nel file Modulo VBA Questo codice chiederà all'utente di specificare gli intervalli delle celle di input e di output.
Passi:
- In primo luogo, premere ALT+F11 per aprire il VBA finestra.
- Poi, dal Inserire selezionare la scheda Modulo Appare una nuova finestra del modulo in cui digitare i codici.
- In terzo luogo, all'interno del modulo, incollare i seguenti codici dopo averli copiati.
Option Explicit Sub ExtractNumbersOnly() Dim CellValue As Range Dim InBx1 As Range Dim InBx2 As Range Dim NumChar As Integer Dim StartChar As Integer Dim XtrNum As String Dim DBxName1 As String Dim DBxName2 As String Dim Iteration As Integer DBxName1 = "Selezione dei dati di input" DBxName2 = "Selezione delle celle di output" Set InBx1 = Application.InputBox("Intervallo di input di celle di testo:", _ DBxName1, "", Type:=8)If TypeName(InBx1) = "Nothing" Then Exit Sub Set InBx2 = Application.InputBox("Select Output Cells:", _ DBxName2, "", Type:=8) If TypeName(InBx2) = "Nothing" Then Exit Sub Iteration = 0 XtrNum = "" For Each CellValue InBx1 Iteration = Iteration + 1 NumChar = Len(CellValue) For StartChar = 1 To NumChar If IsNumeric(Mid(CellValue, StartChar, 1)) Then XtrNum = XtrNum & Mid(CellValue,StartChar, 1) End If Next StartChar InBx2.Item(Iteration) = XtrNum XtrNum = "" Next CellValue End Sub
- Successivamente, premere F5 per eseguire il codice. Una finestra di dialogo denominata " Selezione dei dati di ingresso " apparirà.
- Quindi, selezionare tutte le celle di testo (ad es. B5:B12 ) e premere OK .
- Successivamente, un'altra finestra di dialogo denominata " Selezione della cella di uscita "Appare una finestra in cui è necessario selezionare una particolare cella o un intervallo di celle per visualizzare i dati o i valori in uscita.
- Infine, selezionare l'intervallo di celle C5:C12 e premere Entrare .
- Di conseguenza, vedrete i numeri estratti dai testi tutti in una volta. Terminiamo così i sette metodi rapidi per estrarre i numeri solo dalle celle di Excel.
🔎 Scomposizione del codice VBA
➤ Dichiarazione dei parametri
Option Explicit Sub ExtractNumbersOnly() Dim cellValue As Range Dim InBx1 As Range Dim InBx2 As Range Dim NumChar As Integer Dim StartChar As Integer Dim XtrNum As String Dim DBxName1 As String Dim DBxName2 As String Dim Iteration As Integer DBxName1 = "Selezione dati in ingresso" DBxName2 = "Selezione celle in uscita".
- In questa parte, all'inizio, dichiariamo tutti i nostri parametri come numeri interi, valori stringa o intervalli di celle. Poi diamo i nomi delle nostre finestre di dialogo con "Selezione dei dati di ingresso" e "Selezione della cella di uscita" .
➤ Definizione dei tipi di ingressi e uscite per le finestre di dialogo
Set InBx1 = Application.InputBox("Intervallo di input di celle di testo:", _ DBxName1, "", Type:=8) If TypeName(InBx1) = "Nulla" Then Exit Sub Set InBx2 = Application.InputBox("Seleziona celle di output:", _ DBxName2, "", Type:=8) If TypeName(InBx2) = "Nulla" Then Exit Sub Iterazione = 0 XtrNum = ""
- Ora stiamo definendo i parametri e i loro tipi per le finestre di dialogo. In questo caso, l'aggiunta di Tipo:=8 significa che i dati di input e output saranno costituiti da celle di riferimento o da un intervallo di celle.
- Si definisce inoltre che se i dati di input non vengono trovati, la subroutine si arresta. Citando questa macro, la subroutine non si interrompe per i dati mancanti, ma smette di funzionare.
➤ Combinare le funzioni all'interno dei cicli di codice per le iterazioni
Per ogni cellValue in InBx1 Iterazione = Iterazione + 1 NumChar = Len(cellValue) Per StartChar = 1 a NumChar Se IsNumeric(Mid(cellValue, StartChar, 1)) Allora XtrNum = XtrNum & Mid(cellValue, StartChar, 1) End If Next StartChar InBx2.Item(Iterazione) = XtrNum XtrNum = "" Next cellValue End Sub
- Infine, questa è la parte più importante, in cui si applicano le funzioni o le formule da assegnare ai testi per trovare i valori risultanti dalle stringhe.
- Uno dei principali vantaggi della codifica di una funzione per Excel è che non è necessario digitare una formula di grandi dimensioni come si faceva nei metodi precedenti, in quanto VBA dispone di comandi integrati per l'utilizzo di cicli For o While che consentono di eseguire l'iterazione per ogni singolo dettaglio di una stringa di testo senza alcun problema.
Per saperne di più: Come separare i numeri dal testo in Excel VBA (3 metodi)
Conclusione
Vi abbiamo mostrato 7 semplici metodi per estrarre solo i numeri L'estrazione di soli numeri da una stringa di testo non è così semplice come sembra perché richiede la combinazione di più funzioni, il che rende complicata la formula o la sintassi finale. Speriamo però che il modo in cui abbiamo cercato di illustrare le formule suddividendo le funzioni interne vi abbia aiutato a comprendere la sintassi con un po' di comodità e facilità.
Se trovate altre funzioni o formule che avremmo dovuto aggiungere qui, fatecelo sapere attraverso i vostri preziosi commenti. Oppure potete dare un'occhiata ai nostri articoli più informativi e interessanti relativi alle funzioni di Excel su questo sito.