Tom ha un foglio di lavoro che contiene un bel po ‘di testo. Ha bisogno di un modo per estrarre, dal testo di una data cella, la prima lettera di ogni parola tra parentesi. Ad esempio, se una cella contiene “C’è un’erbaccia (durante la primavera) che deve essere sradicata”, allora Tom deve tirare “dts”

da quel testo. Sospetta che ciò debba essere fatto con una macro ma non sa da dove iniziare.

Se si desidera eseguire questa attività manualmente, non è così difficile da eseguire. Eseguirò i passaggi rapidamente e in generale.

Supponiamo che il tuo testo sia nella colonna A e che ogni cella contenga solo un singolo insieme di parentesi. In questo caso potresti mettere quanto segue nella colonna B:

=IFERROR(LEFT(MID(A1,FIND("(",A1)+1,LEN(A1)),FIND(")", MID(A1,FIND("(",A1)+1,LEN(A1)))-1),"")

Anche se ho suddiviso la formula in due righe qui, ricorda che è una formula singola e deve essere inserita come tale. Copia il numero di celle necessario. Quello che finisci con la colonna B è il testo contenuto con il primo set di parentesi (se presente) se la cella.

Quindi, seleziona tutte le celle nella colonna B, premi Ctrl + C, quindi usa Incolla speciale per incollare nuovamente i valori in quelle celle. Questo elimina le formule ma lascia il testo tra parentesi estratto.

Ora le celle nella colonna B dovrebbero essere ancora selezionate. Si desidera utilizzare la procedura guidata Testo in colonne (dalla scheda Dati della barra multifunzione) per suddividere le parole in singole celle. Ciò è facile da eseguire utilizzando uno spazio come delimitatore nella procedura guidata. Dopo aver fatto questo, ti ritroverai con una singola parola in ogni colonna che inizia con la colonna C.

Ora, nella prima colonna che non contiene parole (diciamo che è la colonna J) dovresti inserire la seguente formula:

=LEFT(TRIM(C1),1) & LEFT(TRIM(D1),1) & LEFT(TRIM(E1),1)

& LEFT(TRIM(F1),1) & LEFT(TRIM(G1),1)) & LEFT(TRIM(H1),1)

& LEFT(TRIM(I1),1)

Di nuovo, questa è un’unica formula anche se qui è mostrata su tre righe. Ciò si traduce nelle prime lettere desiderate nella colonna J.

Ovviamente, questo processo è “fattibile” se hai solo bisogno di tirare le lettere ogni tanto. Se hai bisogno di farlo più spesso, sarebbe meglio affidarti a una funzione definita dall’utente per fare il lavoro per te. Quello che segue è semplice che funzionerà perfettamente:

Function PickInitials(sRaw As String) As String     Dim sTemp As String     Dim J As Integer     Dim Wds() As String

sTemp = ""

J = InStr(sRaw, "(")

If J > 0 Then         sTemp = Mid(sRaw, J + 1)

J = InStr(sTemp, ")")

If J > 0 Then             sTemp = Left(sTemp, J - 1)

End If         Wds = Split(sTemp)



sTemp = ""

For J = 0 To UBound(Wds)

sTemp = sTemp & Left(Trim(Wds(J)),1)

Next J     End If     PickInitials = sTemp End Function

Per utilizzare la funzione, tutto ciò che devi fare è utilizzare quanto segue in una cella:

=PickInitials(A1)

La funzione funzionerà perfettamente se non c’è testo tra parentesi nella cella, se c’è solo una parentesi aperta e non verrà lanciata da più spazi tra le parole. La funzione mantiene le maiuscole delle iniziali. Se vuoi che restituisca tutte le lettere minuscole, puoi cambiare l’ultima riga della macro in questo:

PickInitials = LCase(sTemp)

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (13622) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 e Excel in Office 365.