Reggie ha una cella che contiene tre o più parole. (Il numero di parole potrebbe variare.) Ha bisogno di una formula che gli consenta di estrarre la prima parola della cella o l’ultima parola della cella. Ad esempio, se la cella contiene la frase “Reggie era qui nel 2016”, ha bisogno di una formula per estrarre “Reggie” e di una per estrarre “2016”.

Puoi estrarre entrambe le parole usando le formule. Estrarre la prima parola è relativamente semplice. Tutto quello che devi fare è trovare la posizione del primo spazio nella frase, quindi estrarre tutto ciò che si trova a sinistra. Se si presume che la frase sia in A1, si può usare la formula:

=LEFT(A1,FIND(" ",A1)-1)

Per estrarre l’ultima parola, avrai bisogno di una formula leggermente diversa:

=TRIM(RIGHT(SUBSTITUTE(TRIM(A1)," ",REPT(" ",255)),255))

Questa formula cambia gli spazi in stringhe di 255 spazi. Quindi trova gli ultimi 255 caratteri e taglia i caratteri a sinistra, lasciando l’ultima parola.

Puoi anche, se preferisci, creare funzioni definite dall’utente per afferrare le parole che desideri. Afferrare la prima parola è facile:

Function FirstWord(c As String)

Dim arr

arr = Split(Trim(c), " ")

FirstWord = arr(LBound(arr))

End Function

La funzione utilizza la funzione Dividi per separare tutto ciò che si trova nella cella specificata, utilizzando il secondo parametro (“”) come delimitatore. Ogni elemento dell’array (arr) contiene quindi una parte della stringa originale. In questo caso, ciò che viene restituito è il primo elemento (specificato da LBound) dell’array, la prima parola.

Dato che le parole della frase vengono inserite in un array, puoi usare solo una leggera variazione sulla funzione per restituire l’ultima parola:

Function LastWord(c As String)

Dim arr

arr = Split(Trim(c), " ")

LastWord = arr(UBound(arr))

End Function

Si noti che, in sostanza, l’unico vero cambiamento nella funzione è l’uso di UBound invece di LBound. La funzione UBound specifica l’ultimo elemento dell’array. Puoi usare entrambe queste funzioni in un foglio di lavoro in questo modo:

=FirstWord(A1)

=LastWord(A1)

Se preferisci, puoi bypassare usando la funzione Split e, invece, usare altre funzioni relative alle stringhe:

Function GetFirst(c As String)

GetFirst = Left(c, InStr(c, " ") - 1)

End Function
Function GetLast(c As String)

GetFirst = Mid(c, InstrRev(c, " ") + 1)

End Function

_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 (11985) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.

Puoi trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: