Domande frequenti - Calc
TDF LibreOffice Document Liberation Project Blog comunitari Weblate Nextcloud Redmine Ask LibreOffice Donazione
Conversione di testo numerico in dati numerici
Può accadere che dati incollati dagli appunti, importati da file CSV o inseriti in una cella già formattata come Testo siano di tipo Testo, sebbene a livello visivo appaiano come numeri o date, di conseguenza non potranno essere utilizzati nei calcoli. In questo caso il contenuto testuale della cella, successivamente formattato come numerico, nella Riga di digitazione è preceduto da un apostrofo ' che non ne fa propriamente parte e che sta a indicare che il contenuto stesso potrebbe essere interpretato come numero, se non fosse che si tratta di testo. Di conseguenza i calcoli aritmetici che coinvolgono tali celle possono produrre un errore #'VALORE!, oppure la cella viene ignorata nel caso di funzioni che prevedono una sequenza numerica di un intervallo, ad esempio SUM()'. Per convertire tale testo numerico in dati numerici è necessario procedere come segue, presupponendo che il testo possa essere effettivamente convertito, ovvero che utilizzi i separatori (decimale, data, ...) del locale. Da notare che la sola modifica del formato dei numeri non ne altera il contenuto; le stringhe di valore devono essere inserite nuovamente per essere convertite, procedura che viene eseguita con i metodi seguenti.
Find & Replace number text
- selezionate l'intervallo di celle contenenti i dati da convertire
- premete Ctrl+M o fate clic con il pulsante destro del mouse sull'intervallo selezionato per accedere al menu contestuale e scegliete Cancella formattazione diretta.
- Se il locale non utilizza i separatori necessari per la conversione del testo in numero, applicate temporaneamente il formato numerico di un locale che si avvalga del separatore o dei separatori richiesti, ad esempio inglese-USA, per ottenere il punto . come separatore dei decimali; in seguito, dopo la conversione, è possibile applicare il formato numerico definitivo del proprio locale. Che seguiate un procedimento oppure l'altro, passate all'esempio successivo riportato di seguito.
- premete Ctrl+H o scegliete il menu Modifica -> Trova e Sostituisci
- Inserite Trova: .+.
- Inserite Sostituisci: $0.
- in Altre opzioni' selezionate
- "Solo nella selezione"
- "Espressioni regolari"
- Scegliete "Sostituisci tutto"
Questo inserisce nuovamente il contenuto della cella, fondamentalmente come se fosse stato digitato da tastiera, e rileva l'inserimento numerico, la data oppure l'ora.
Find & Replace with different decimal separator
Se il numero non viene riconosciuto perché il locale utilizza un separatore decimale diverso da quello dei dati, ad esempio la virgola (,) invece del punto (.), quindi la riga di digitazione non visualizza il prefisso apostrofo ('), allora:
- selezionate l'intervallo di celle contenenti i dati da convertire
- premete Ctrl+M o fate clic con il pulsante destro del mouse sull'intervallo selezionato per accedere al menu contestuale e scegliete Cancella formattazione diretta
- premete Ctrl+H o scegliete il menu Modifica -> Trova e Sostituisci
- Inserite Trova: .
- Inserite Sostituisci: ,
- in Altre opzioni
- selezionate "Solo nella selezione"
- deselezionate "Espressioni regolari"
- Scegliete "Sostituisci tutto"
Occorre tenere presente che questo naturalmente "non" è possibile se i numeri contengono un insieme di separatori di gruppi e di separatori decimali, poiché la loro sostituzione produrrebbe separatori identici.
Find & Replace wrong date order
If you pasted or imported dates in a different Month/Day/Year order, for example 06/28/2021, than your locale's that uses Day/Month/Year order, for example 28/06/2021, and/or some dates like 06/01/2021 were recognized but yielding a wrong date and others like 06/28/2021 weren't, then
- do not press Ctrl+M and do not clear number/date formats on selected cells, leave all date formats intact but if there are cells formatted to Text then change those and only those to General
- mark the cell range containing the data to convert
- press Ctrl+H or choose Edit -> Find & Replace from the menu
- enter Find: (\d+)/(\d+)/(\d+)
- enter Replace: $2/$1/$3
- under Other options activate
- Current selection only
- Regular expressions
- hit Replace All
Explanation of the Find regular expression:
- (\d+) a group of digits, month
- / the date separator
- (\d+) a group of digits, day of month
- / the date separator
- (\d+) a group of digits, year
Explanation of the Replace expression:
- $2 the second group, group of digits, day of month
- / the date separator
- $1 the first group, group of digits, month
- / the date separator
- $3 the third group, group of digits, year
The text source and the target locale may have other requirements regarding order of day,month,year and date separator; then adapt.
To replace to the international YYYY-MM-DD ISO 8601 date format that is understood in every locale use (assuming the original Month/Day/Year order from above)
- Replace: $3-$1-$2
or if the year was only two digits then prefix the century because otherwise the result would be ambiguous and not result in an ISO date, like
- Replace: 20$3-$1-$2
Find & Replace wrong date order with month names
If you pasted or imported dates that contain month names, for example April 1, 2021 and your locale uses a different day/month order, for example 1 April 2021, or even different names in a different language, then
- mark the cell range containing the data to convert
- press Ctrl+M or right click on the marked range to get the context menu and select Clear Direct Formatting
- if your locale does not use the month names that are required for the text to be converted to date then temporarily apply a date format of a locale that uses the desired names; you can then later after the conversion apply the desired final date format of your (default) locale.
- press Ctrl+H or choose Edit -> Find & Replace from the menu
- enter Find: ([\p{Letter}]+)\s+(\d+).*\s+(\d+)
- enter Replace: $2 $1 $3
- under Other options activate
- Current selection only
- Regular expressions
- hit Replace All
Explanation of the Find regular expression:
- ([\p{Letter}]+) a group of Unicode letter characters, month
- \s+ at least one whitespace character
- (\d+) a group of digits, day of month
- .* any character, 0 or more, matches the comma in the example
- \s+ at least one whitespace character
- (\d+) a group of digits, year
Explanation of the Replace expression:
- $2 the second group, group of digits, day of month
- one space
- $1 the first group, group of letters, month
- one space
- $3 the third group, group of digits, year
The target locale may have other requirements regarding order of day,month,year; then adapt.
CT2N - Convert Text To Number extension
Se vi avvalete spesso di tali funzionalità o se desiderate convertire i dati con separatori diversi dal vostro locale, installate l'estensione CT2N - Convert Text To Number (and dates).
CSV Import
Se i dati sono il risultato di un'importazione da un file CSV, potrebbe esservi sfuggito che nella finestra di dialogo di importazione è possibile selezionare il locale di importazione in base a quello dei vostri dati. Questo consente di riconoscere i separatori decimali e di gruppo, i simboli delle valute e i nomi dei giorni e dei mesi nelle date per ottenere dati numerici corretti. Inoltre alcune date e formati di valuta vengono riconosciuti solo se l'opzione Individua numeri speciali è attiva (poiché "potrebbe" verificarsi una conversione non desiderata di testo in testo numerico, da qui il motivo della presenza dell'opzione).
Convert using Text to Columns
Using
▸ is also an option: