Estrarre le lettere iniziali di ogni parola da una stringa

Renzo ha bisogno di una formula che estragga le prime lettere di una serie di parole. Ad esempio, se una cella contiene il testo “Renzo Riccardo Russo” vorrebbe estrarre, in un’altra cella, le lettere “RRR”. Il numero di parole in serie può variare da cella a cella.

Ci sono un paio di modi in cui questo compito può essere affrontato. Si presume, per cominciare, che non si desideri modificare la struttura del foglio di lavoro aggiungendo colonne intermedie. Questa ipotesi preclude, tra l’altro, l’uso della funzione Testo in colonne per dividere la stringa originale in singole parole.

La chiave del problema è assicurarsi che la formula possa determinare dove si trovano gli spazi nella stringa originale. Potresti pensare che una formula come la seguente possa svolgere il lavoro:

=SINISTRA(A1;1)&STRINGA.ESTRAI(A1;TROVA(" ";A1;1)+1;1)&STRINGA.ESTRAI(A1;TROVA(" ";A1;TROVA(" ";A1;1)+1)+1;1)

Questa formula funziona in parte. Funziona bene se la stringa originale ha due spazi che separano tre parole. Se sono presenti meno parole, la formula restituisce un errore. Se ci sono altre parole, restituisce solo le prime lettere delle prime tre parole (ignora qualsiasi cosa dopo la terza parola).

Ciò significa che la formula deve non solo verificare la presenza di spazi, ma anche gestire gli errori se non ci sono spazi o se sono presenti troppo pochi. Il controllo degli errori significa che la formula diventa molto più lunga:

=SE.ERRORE(SINISTRA(A1;1);"")&SE.ERRORE(STRINGA.ESTRAI(A1;TROVA(" ";A1)+1;1);"")&SE.ERRORE(STRINGA.ESTRAI(A1;TROVA(" ";A1;TROVA(" ";A1)+1)+1;1);"")&SE.ERRORE(STRINGA.ESTRAI(A1;TROVA(" ";A1;TROVA(" ";A1;TROVA(" ";A1)+1)+1)+1;1);"")&SE.ERRORE(STRINGA.ESTRAI(A1;TROVA(" ";A1;TROVA(" ";A1;TROVA(" ";A1;TROVA(" ";A1)+1)+1)+1)+1;1);"")

Questa formula gestirà, correttamente, fino a 5 parole in una stringa. Presuppone inoltre che la stringa non inizi o termini con uno spazio e che non contenga più di uno spazio tra le parole. Se si desidera gestire un numero maggiore di parole o altre potenziali complicazioni (come il numero di spazi tra le parole), è meglio utilizzare una funzione definita dall’utente (UDF).

Esistono diversi modi in cui una funzione definita dall’utente può estrarre i caratteri iniziali dalle parole di una stringa. L’esempio seguente, è forse il codice più conciso in cui mi sono imbattuto:

Questo contenuto è riservato agli abbonati

Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.

Se sei già abbonato Accedi per sbloccare il contenuto!

In caso contrario abbonati qui! L'abbonamento è conveniente.

E puoi interromperlo in ogni momento e in completa autonomia.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

Tags: , , , , , , ,

Ti è stato utile?