edutecnica

Funzioni Excel per il testo

     

E’ noto che il programma Excel viene usato in modo intensivo per l'elaborazione dei dati,in particolare dei numeri; tuttavia Excel dispone anche di numerose funzioni per la manipolazione di testi e stringhe alfanumeriche. La tabella seguente mostra alcune delle funzioni per il testo più usate.

Funzione Descrizione
CODICE.CARATT Inserisce un carattere individuato dal codice ANSI (il set di caratteri del PC), all'interno una stringa di testo. Utilizzato per inserire i caratteri di controllo "a capo" (codice 10) o "spazio" (codice 32) o le sequenze di escape o altro ancora.
CONCAT Cerca un valore in una matrice in base a una modalità di confronto e restituisce la matrice trovata
CONCATENA Unisce due o più testi in uno soltanto.
DESTRA Estrae dalla parte destra di un testo (dal fondo) un numero fissato di caratteri.
IDENTICO Confronta due testi e ritorna VERO se coincidono altrimenti FALSO.
MAIUSC Converte una stringa di testo in caratteri tutti maiuscoli.
MAIUSC.INIZ Converte una stringa di testo in caratteri tutti minuscoli tranne il primo carattere in maiuscolo.
MINUSC Converte una stringa di testo in caratteri tutti minuscoli.
RICERCA Come la funzione TROVA ma non distingue le lettere maiuscole dalle minuscole. In genere è meglio impiegare la funzione TROVA
RIMPIAZZA Sostituisce la stringa di testo (testo 2) all'interno di un'altra (testo 1) in una posizione specifica. È uno strumento molto preciso che opera una sola sostituzione. La funzione SOSTITUISCI è meno precisa ma più flessibile.
RIPETI Inserisce un testo in una cella un numero fissato di volte. Utiliz- zata soprattutto per inserire stringhe di asterischi "*" trattini “-“o caratteri simili. Può inserire fino a circa 32.000 caratteri in una sola cella.
SINISTRA Estrae dalla parte sinistra di un testo (dall'inizio) un numero fissato di caratteri.
SOSTITUISCI Sostituisce la stringa di testo (testo 2) all'interno di un'altra (testo 1) distinguendo tra maiuscole e minuscole. Può operare più sosti- tuzioni con un solo comando, per esempio, per sostituire tutte le virgole con spazi ecc. La funzione RIMPIAZZA Sostituisce un testo in modo più preciso.
STRINGA.ESTRAI Estrae da una stringa di testo un numero di caratteri fissato, a partire da una determinata posizione.
TESTO Converte un valore numerico, numero o data in un testo applicando il formato passato come parametro.
TROVA Cerca un carattere o un testo all'interno di una stringa. Ritorna il numero del primo carattere trovato nella stringa. Distingue tra lettere maiuscole e minuscole.

 

Funzione CONCATENA()

     

Nel file allegato testi.xls (Foglio1) ci proponiamo di creare un indirizzario per una eventuale mailing list basandoci su un elenco di persone individuabili da un cognome, un nome ed una lettera identificativa per il sesso(M/F). A queste persone deve essere inviata una missiva, il cui contenuto è identico per tutti ma all’inizio della quale dovrà apparire un’etichetta di riferimento dotata di un titolo di cortesia col nome di ciascuna persona. Un altro parametro che si diversifica è, ovviamente, l’indirizzo a cui deve essere spedita ciascuna mail.

Il campo Etichetta indirizzo nel primo record (D2) può facilmente essere compilato dal comando:
=CONCATENA( SE(C2="M";$G$1;$G$2); " ";B2;" ";A2)
che rispetta la sintassi di default della funzione CONCATENA().

=CONCATENA (testo1;testo2;...)

e che comunque non impedisce che uno degli argomenti passati sia costituita da un'altra funzione, in questo caso, la funzione SE(), che stabilisce in base al contenuto della cella immediatamente a sinistra quale titolo di cortesia adottare.

Funzione MINUSC()

     

La colonna della mail, oltre alla funzione CONCATENA() coinvolge anche la funzione MINUSC() che converte in minuscolo tutte le lettere maiuscole contenute in una stringa di testo. Questo avviene attraverso la funzione composta:

=CONCATENA(MINUSC(B2);".";MINUSC(A2);"@";$G$3)

Funzione DESTRA()

     

Una problematica consueta dove sono coinvolte le funzioni per la gestione del testo è sicuramente quella dell'estrazione di una sottostringa da una pre-esistente stringa di testo. Nel seguente elenco la colonna che ha intestazione Comune, addirittura non rispetta la prima forma normale dei database (1FN) che prevede che ciascun attributo sia definito su un dominio con valori atomici. In questo caso notiamo che nella stessa colonna sono stati scritti sia il comune che la sigla della provincia.

La sigla del comune (con le parentesi) può essere estratta in cella B2 col comando:
=DESTRA(A2;4)
La funzione DESTRA() ha sintassi

=DESTRA(testo;num_caratt)

e restituisce l'ultimo o gli ultimi primi caratteri di una stringa di testo in base al numero di caratteri specificato.
Se avessimo voluto estrarre solo la sigla senza le parentesi come avviene in cella C2 potevamo usare :
=DESTRA(SINISTRA(B2;3);2)
Infatti SINISTRA(B2;3) estra la stringa "(MI".

Funzione SINISTRA()

     

La funzione SINISTRA() ha sintassi:

=SINISTRA(testo;num_caratt)

testo è la stringa di testo che contiene i caratteri che si desidera estrarre.
num_caratt specifica il numero di caratteri da estrarre.
num_caratt deve essere maggiore o uguale a zero.

Se num_caratt è maggiore della lunghezza del testo, verrà restituito l'intero testo.
Questa funzione restituisce il primo o i primi caratteri di una stringa di testo in base al numero di caratteri specificato.
Poi della stringa "(MI" verranno estratti solo i 2 caratteri più a destra.

Funzione TROVA()

     

In cella E2 è contenuta la formula:
=TROVA( "("; A2; 1)

che ci permette di trovare la posizione del carattere "(" all'interno della stringa in A2. La sintassi della funzione TROVA() è la seguente:

=TROVA(testo;stringa;inizio)

testo è il testo che si desidera trovare.
stringa è il testo contenente il testo che si desidera trovare.

Questa funzione ricerca la stringa di testo (testo) all'interno di un'altra stringa (stringa) e restituisce un numero corrispondente alla posizione iniziale di stringa a partire dal primo carattere di testo.
È possibile utilizzare anche CERCA() per ricercare una stringa di testo all'interno di un'altra; a differenza di CERCA(), la funzione TROVA() distingue la maiuscole dalle minuscole e non riconosce i caratteri jolly.

La funzione TROVA() viene coinvolta nella formula inserita in cella F2 per estrarre unicamente la stringa del comune .
=SINISTRA(A2;TROVA("(";A2)-2)

vengono presi i caratteri partendo da sinistra della stringa contenuta in A2 fino alla posizione specificata da TROVA("(";A2)-2).

In cella G2 viene inserita la formula:
=LUNGHEZZA(F2)
La funzione LUNGHEZZA() ha sintassi:

= LUNGHEZZA(testo)

essa restituisce il numero di caratteri in una stringa di testo.

Funzione STRINGA.ESTRAI()

     

La formula in cella F2 può essere sostituita dalla formula
=STRINGA.ESTRAI(A2;1;TROVA("(";A2;1)-2)

La funzione STRINGA.ESTRAI() ha sintassi:

STRINGA.ESTRAI(testo;inizio; Num_caratt)

testo è la stringa di testo che contiene i caratteri che si desidera estrarre.
inizio è la posizione del primo carattere che si desidera estrarre dal testo. Il valore di inizio per il primo carattere nel testo è uguale a 1 e così via.
num_caratt specifica il numero di caratteri da estrarre dal testo.

Se inizio è maggiore della lunghezza di testo, STRINGA.ESTRAI restituirà "" (testo vuoto).
Se inizio è minore della lunghezza di testo, ma inizio e num_caratt superano la lunghezza di testo, STRINGA.ESTRAI restituirà i caratteri fino alla fine di testo.
Se inizio è minore di 1, STRINGA.ESTRAI restituirà il valore di errore #VALORE!.
Se num_caratt è negativo, STRINGA.ESTRAI restituirà il valore di errore #VALORE!.

Ad esempio se in cella A1 è presente la stringa "Gatto nero"

La formula in B1:
=STRINGA.ESTRAI(A1;1;5)
estrae cinque caratteri della stringa, partendo dal primo carattere (Gatto).

La formula in C1
=STRINGA.ESTRAI(A1;7;20)
estrae venti caratteri della stringa, partendo dal settimo carattere (nero) .

La formula in D1
=STRINGA.ESTRAI(A2;20;5)
Dato che il punto di partenza è maggiore della lunghezza della stringa, verrà restituita una stringa vuota ()

Funzione TESTO()

         

La funzione TESTO() converte un valore in testo assegnandogli un formato numerico specifico. Questa funzione ha sintassi:

= TESTO(val;formato)

val è un valore numerico, una formula che calcola un valore numerico o un riferimento a una cella che contiene un valore numerico.
formato è un formato numerico sotto forma di testo nella casella Categoria della scheda Numero della finestra di dialogo Formato celle.

Come si vede nel Foglio3 del file allegato vengono riportati di dati di vendita di due venditori.

La formula in cella C2
=A2&" ha venduto "&TESTO(B2; "€ 0,00")&" di unità."
Combina questo contenuto in una frase (Bianchi ha venduto € 2800,00 di unità).

La formula in cella C3
=A3&" ha venduto il "&TESTO(B3;"0%")&" delle vendite totali."
combina questo contenuto in una frase (Rossi ha venduto il 40% delle vendite totali).

Il valore inserito in cella A4 può essere opportunamente convertito in testo e formattato con due cifre decimali e col punto separatore delle migiaia con la formula
=TESTO(A4;"#.###,00")

Il valore inserito in cella A5 può essere convertito in un testo con formato percentuale con due cifre decimali dopo la virgola tramite una formula del tipo:
=TESTO(A5;"0,00%")

Se in cella A6 viene inserita una data nel formato "gg/mm/aaaa" la formula in B6
=TESTO(A6;"gggg")
converte lla data inserita in cella A6 nel corrispondente giorno della settimana.

Funzione RIMPIAZZA()

         

La funzione RIMPIAZZA() sostituisce parte di una stringa di testo con una stringa di testo diversa, in base al numero di caratteri specificati. Essa ha sintassi:

= RIMPIAZZA(testo_prec;inizio;num_caratt;nuovo_testo)

testo_prec è il testo nel quale si desidera sostituire alcuni caratteri.
inizio è la posizione del carattere del testo_prec che si desidera sostituire con nuovo_testo.
num_caratt è il numero di caratteri nel testo_prec che si desidera sostituire con nuovo_testo utilizzando la funzione RIMPIAZZA().
nuovo_testo è il testo che sostituirà i caratteri nel testo_prec.

=RIMPIAZZA(A1;6;5;"*")
Sostituisce cinque caratteri a partire dal sesto (abcde*k) .

=RIMPIAZZA(A2;3;2;"10")
Sostituisce le ultime due cifre di 2009 con 10 (2010).

=RIMPIAZZA(A3;1;3;"@")
Sostituisce i primi tre caratteri con @ (@456) .

Funzione SOSTITUISCI()

         

Sostituisce nuovo_testo a testo_prec in una stringa di testo.
Utilizziamo la funzione SOSTITUISCI() quando si desidera sostituire del testo specifico in una stringa di testo.
Utilizziamo la funzione RIMPIAZZA() quando si desidera sostituire del testo qualsiasi in una posizione specifica all'interno di una stringa di testo. Sintassi:

=SOSTITUISCI(testo;testo_prec;nuovo_testo;ricorrenza)

testo è il testo o un riferimento a una cella contenente del testo di cui si desidera sostituire dei caratteri.
testo_prec è il testo che si desidera sostituire.
nuovo_testo è il testo che si desidera sostituire a testo_prec.
Ricorrenza specifica la ricorrenza di testo_prec da sostituire con nuovo_testo. Se si specifica ricorrenza, verrà sostituita soltanto la ricorrenza specificata di testo_prec. In caso contrario, ogni ricorrenza di testo_prec in testo verrà sostituita con nuovo_testo.

=SOSTITUISCI(A1; "vendite"; "costi")
Sostituisce vendite con costi (Dati costi)

=SOSTITUISCI(A2; "1"; "2"; 1)
Sostituisce la prima istanza di "1" con "2" (2° trimestre 2022) .

=SOSTITUISCI(A3; "2"; "3"; 2)
Sostituisce la seconda istanza di "2" con "3" (1° trimestre 2033).