Estrarre le lettere iniziali da una stringa (Microsoft Excel)
Rajeev ha bisogno di una formula che estrarrà le prime lettere di una serie di parole. Ad esempio, se una cella contiene il testo “Rajeev Kumar Pandey”, vorrebbe estrarre, in un’altra cella, le lettere “RKP”.
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, inoltre, 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 farà il lavoro:
=LEFT(A1,1)&MID(A1,FIND(" ",A1,1)+1,1)&MID(A1, FIND(" ",A1,FIND(" ",A1,1)+1)+1,1)
Questa formula funziona parzialmente. Funziona perfettamente se la stringa originale ha due spazi che separano tre parole. Se ci sono meno parole, la formula restituisce un errore. Se sono presenti 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 controllare gli spazi, ma gestire gli errori se non ci sono spazi o se ci sono troppo pochi spazi. Il controllo degli errori significa che la formula diventa molto più lunga:
=IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ", A1)+1)+1)+1)+1,1)),IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1)), IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)), IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)), IF(ISERR(LEFT(A1,1)),"",LEFT(A1,1)),LEFT(A1,1) &MID(A1,SEARCH(" ",A1)+1,1)),LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)), LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1)),LEFT(A1,1) &MID(A1,SEARCH(" ",A1)+1,1)&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1) +1)+1)+1,1))
Questa formula gestirà, correttamente, qualsiasi cosa da 0 a 5 parole in una stringa. Si presume inoltre che la stringa non inizi o termini con uno spazio e che non contenga più numeri di spazi tra le parole. Se vuoi gestire un numero maggiore di parole o altre potenziali complicazioni (come il numero di spazi tra le parole), è meglio usare una funzione definita dall’utente.
Esistono diversi modi in cui una funzione definita dall’utente può estrarre i caratteri iniziali dalle parole di una stringa. In effetti, ho ricevuto parecchie variazioni che ottengono la stessa cosa. Il seguente esempio, tuttavia, è forse il codice più conciso che ho incontrato:
Function Initials(Raw As String) As String Dim Temp As Variant Dim J As Integer Application.Volitile Temp = Split(Trim(Raw)) For J = 0 To UBound(Temp) Initials = Initials & Left(Temp(J), 1) Next J End Function
La funzione Split “strappa” una stringa in base alla posizione degli spazi al suo interno. Le singole parole nella stringa vengono inserite in un array (in questo caso, Temp) da cui è possibile accedere alle singole parole. Per usare la funzione nel tuo foglio di lavoro, usa semplicemente qualcosa del genere:
=Initials(A1)
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (8663) si applica a Microsoft Excel 2007, 2010 e 2013. Puoi trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: