
Generieke formule
=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),""))
Samenvatting
Om tekst met hoofdletters af te korten, kunt u deze matrixformule proberen op basis van de TEXTJOIN-functie, een nieuwe functie die beschikbaar is in Office 365 en Excel 2019. U kunt deze benadering gebruiken om initialen van namen te maken of om acroniemen te maken. Alleen hoofdletters overleven deze formule, dus de brontekst moet woorden met hoofdletters bevatten. U kunt de functie PROPER gebruiken om woorden indien nodig met een hoofdletter te schrijven.
In het getoonde voorbeeld is de formule 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),""))
Uitleg
Werkend van binnen naar buiten, wordt de MID-functie gebruikt om de string in een reeks afzonderlijke letters te gieten:
MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)
In dit deel van de formule worden MIDDEN, RIJ, INDIRECT en LEN gebruikt om een tekenreeks naar een matrix of letters te converteren, zoals hier wordt beschreven.
MID retourneert een array van alle tekens in de tekst.
("W"; "i"; "l"; "l"; "i"; "a"; "m"; ""; "S"; "h"; "a"; "k"; "e ";" s ";" p ";" e ";" a ";" r ";" e ")
Deze array wordt ingevoerd in de CODE-functie, die een reeks numerieke ascii-codes uitvoert, één voor elke letter.
Afzonderlijk worden RIJ en INDIRECT gebruikt om een andere numerieke array te maken:
ROW(INDIRECT("65:90")
Dit is het slimme stukje. De cijfers 65 tot 90 komen overeen met de ascii-codes voor alle hoofdletters tussen AZ. Deze array gaat naar de MATCH-functie als de lookup-array, en de originele array met ascii-codes wordt geleverd als de lookup-waarde.
VERGELIJKEN retourneert vervolgens een getal (op basis van een positie) of de fout # N / A. Cijfers staan voor hoofdletters, dus de ISNUMBER-functie wordt samen met de ALS-functie gebruikt om resultaten te filteren. Alleen tekens waarvan de ascii-code tussen 65 en 90 ligt, worden opgenomen in de laatste array, die vervolgens opnieuw wordt samengesteld met de functie TEXTJOIN om de laatste afkorting of acroniem te maken.