
Formula generica
=TEXTJOIN("",1,IF(ISNUMBER(MATCH(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),ROW(INDIRECT("65:90")),0)),MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),""))
Sommario
Per abbreviare il testo che contiene lettere maiuscole, puoi provare questa formula di matrice basata sulla funzione TEXTJOIN, una nuova funzione disponibile in Office 365 ed Excel 2019. Puoi utilizzare questo approccio per creare iniziali dai nomi o per creare acronimi. Solo le lettere maiuscole sopravviveranno a questa formula, quindi il testo di origine deve includere parole in maiuscolo. È possibile utilizzare la funzione PROPER per scrivere in maiuscolo le parole, se necessario.
Nell'esempio mostrato, la formula in C5 è:
=TEXTJOIN("",1,IF(ISNUMBER(MATCH(CODE(MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)),ROW(INDIRECT("65:90")),0)),MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1),""))
Spiegazione
Lavorando dall'interno verso l'esterno, la funzione MID viene utilizzata per lanciare la stringa in un array di singole lettere:
MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)
In questa parte della formula, MID, ROW, INDIRECT e LEN vengono utilizzati per convertire una stringa in una matrice o in lettere, come descritto qui.
MID restituisce una matrice di tutti i caratteri nel testo.
("W"; "i"; "l"; "l"; "i"; "a"; "m"; ""; "S"; "h"; "a"; "k"; "e ";" s ";" p ";" e ";" a ";" r ";" e ")
Questo array viene inserito nella funzione CODE, che emette un array di codici ASCII numerici, uno per ogni lettera.
Separatamente, ROW e INDIRECT vengono utilizzati per creare un altro array numerico:
ROW(INDIRECT("65:90")
Questa è la parte intelligente. I numeri da 65 a 90 corrispondono ai codici ASCII per tutte le lettere maiuscole comprese tra AZ. Questo array va nella funzione MATCH come array di ricerca e l'array originale di codici ASCII viene fornito come valore di ricerca.
CONFRONTA quindi restituisce un numero (in base a una posizione) o l'errore # N / A. I numeri rappresentano le lettere maiuscole, quindi la funzione ISNUMBER viene utilizzata insieme alla funzione SE per filtrare i risultati. Solo i caratteri il cui codice ASCII è compreso tra 65 e 90 verranno inseriti nell'array finale, che viene quindi riassemblato con la funzione TEXTJOIN per creare l'abbreviazione o l'acronimo finale.