Σ Fogli di calcolo

Numeri memorizzati come testo: come riconoscerli e convertirli

Perché alcuni numeri non si sommano, come riconoscerli, come convertirli con VALORE e NUMERO.VALORE e come gestire i separatori decimali tra paesi diversi.

Una colonna di importi esportata dal gestionale sembra perfetta, ma il totale in fondo è zero, oppure è più basso di quanto dovrebbe. Un CERCA.VERT non trova codici che sono chiaramente presenti. Un ordinamento mette 100 prima di 20. Il sintomo è diverso, la causa è quasi sempre la stessa: alcuni valori che sembrano numeri sono in realtà testo.

Come riconoscerli

Ci sono diversi indizi, da usare insieme:

  • allineamento: senza un allineamento impostato a mano, i numeri stanno a destra della cella e il testo a sinistra;
  • indicatore di errore: Excel mostra un triangolino verde nell'angolo della cella con l'avviso «Numero memorizzato come testo»;
  • barra di stato: selezionando la colonna, la barra in basso mostra il conteggio ma non la somma, oppure una somma inferiore al previsto;
  • verifica con formula: =VAL.NUMERO(A2) restituisce FALSO per un numero salvato come testo; =VAL.TESTO(A2) restituisce VERO.

Per un controllo su un'intera colonna, =CONTA.NUMERI(A2:A5000) confrontato con =CONTA.VALORI(A2:A5000) dice subito quante celle non sono numeri.

Da dove arrivano

Le cause più frequenti sono:

  1. esportazioni da altri sistemi che racchiudono i valori tra virgolette o li formattano come testo;
  2. copia e incolla da pagine web o PDF, che spesso porta con sé spazi, spazi non separabili o caratteri invisibili;
  3. celle formattate come Testo prima dell'inserimento: qualsiasi cosa digiti diventa testo, anche dopo aver cambiato formato;
  4. un apostrofo iniziale, che in Excel forza il contenuto a essere trattato come testo;
  5. separatori decimali o delle migliaia diversi da quelli previsti dalle impostazioni regionali.

L'ultimo punto merita un approfondimento.

Il problema del separatore decimale

In Italia il separatore decimale è la virgola e quello delle migliaia è il punto: 1.234,56. Nei paesi anglosassoni è il contrario: 1,234.56. Il foglio di calcolo interpreta ciò che digiti, o ciò che importi, secondo le impostazioni regionali del sistema operativo (o quelle specifiche del programma, se modificate).

Se su un computer con impostazioni italiane importi un file con «1234.56», il programma può:

  • trattarlo come testo, perché il punto non è un separatore decimale valido;
  • oppure, in certi casi, interpretarlo come una data o come un numero completamente diverso, se il punto viene letto come separatore delle migliaia.

Il secondo caso è il più insidioso, perché non si vede: 1.234 diventa milleduecentotrentaquattro invece di uno virgola due tre quattro.

Convertire testo in numero

Strumenti rapidi

  • L'avviso di errore di Excel: selezionando le celle con il triangolino, il menu propone «Converti in numero». Funziona bene se il testo è già nel formato corretto.
  • Incolla speciale, Moltiplica: scrivi 1 in una cella vuota, copiala, seleziona la colonna da convertire e usa Incolla speciale scegliendo l'operazione Moltiplica. Il programma è costretto a interpretare ogni valore come numero.
  • Testo in colonne: selezionando la colonna e confermando subito la procedura, Excel reinterpreta i valori. Nelle opzioni avanzate puoi indicare quale separatore decimale e delle migliaia usa il testo di origine, ed è il modo più pulito per correggere un'importazione con formato straniero.

Con le formule

=VALORE(A2) converte un testo in numero secondo le impostazioni regionali correnti. Se il testo usa un formato diverso, NUMERO.VALORE (NUMBERVALUE) permette di dichiarare i separatori:

=NUMERO.VALORE(A2; "."; ",")

Il secondo argomento è il separatore decimale del testo di origine, il terzo quello delle migliaia. Questa formula trasforma «1,234.56» in 1234,56 su un computer italiano, indipendentemente dalle impostazioni. È la soluzione più affidabile quando ricevi periodicamente file dall'estero.

Se il testo contiene simboli di valuta o spazi, puliscilo prima:

=NUMERO.VALORE(ANNULLA.SPAZI(SOSTITUISCI(A2; "€"; "")); ","; ".")

Numeri negativi con il segno in fondo

Alcuni sistemi esportano i negativi come «125,00-». Per convertirli:

=SE(DESTRA(A2;1)="-"; -NUMERO.VALORE(SINISTRA(A2; LUNGHEZZA(A2)-1); ","; "."); NUMERO.VALORE(A2; ","; "."))

Quando il testo è la scelta giusta

Non tutto ciò che è fatto di cifre deve essere un numero. Vanno conservati come testo:

  • codici con zeri iniziali, come CAP («00184») o codici articolo («000457»);
  • numeri di telefono, che possono iniziare con zero o con il prefisso internazionale;
  • codici più lunghi di 15 cifre, che come numeri perderebbero le cifre finali;
  • identificativi su cui non farai mai operazioni aritmetiche.

In questi casi imposta la colonna come Testo prima di inserire o importare i dati. Il criterio è semplice: se ha senso sommarlo o farne la media, è un numero; altrimenti è un codice.

Nel mio lavoro, quando un foglio riceve dati da fonti esterne, aggiungo una piccola riga di controllo con CONTA.NUMERI e CONTA.VALORI per ogni colonna numerica: se i due conteggi divergono, so subito che qualcosa è entrato come testo.

In sintesi

  • Numeri allineati a sinistra, triangolini verdi e somme basse indicano valori salvati come testo.
  • CONTA.NUMERI confrontato con CONTA.VALORI misura il problema su un'intera colonna.
  • Per file con separatori stranieri usa NUMERO.VALORE dichiarando i separatori.
  • Incolla speciale con Moltiplica per 1 e Testo in colonne sono conversioni rapide.
  • CAP, telefoni e codici lunghi vanno conservati come testo.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche