
Загальна формула
=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),""))
Резюме
Щоб скоротити текст, який містить великі літери, ви можете спробувати цю формулу масиву на основі функції TEXTJOIN, нової функції, доступної в Office 365 та Excel 2019. Цей підхід можна використовувати для створення ініціалів з імен або для створення скорочень. Тільки великі літери витримають цю формулу, тому вихідний текст повинен містити слова з великої літери. За потреби можна використовувати функцію PROPER для написання великих слів.
У наведеному прикладі формула в С5 має вигляд:
=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),""))
Пояснення
Функціонуючи зсередини назовні, функція MID використовується для перетворення рядка в масив окремих букв:
MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)
У цій частині формули MID, ROW, INDIRECT та LEN використовуються для перетворення рядка в масив або літери, як описано тут.
MID повертає масив усіх символів у тексті.
("W"; "i"; "l"; "l"; "i"; "a"; "m"; ""; "S"; "h"; "a"; "k"; "e ";" s ";" p ";" e ";" a ";" r ";" e ")
Цей масив подається у функцію CODE, яка виводить масив числових кодів ascii, по одному для кожної букви.
Окремо ROW та INDIRECT використовуються для створення іншого числового масиву:
ROW(INDIRECT("65:90")
Це розумна штука. Цифри від 65 до 90 відповідають кодам ascii для всіх великих літер між AZ. Цей масив переходить у функцію MATCH як масив підстановки, а оригінальний масив кодів ascii подається як значення підстановки.
Потім MATCH повертає або число (на основі позиції), або помилку # N / A. Цифри представляють великі літери, тому функція ISNUMBER використовується разом із функцією IF для фільтрування результатів. Тільки символи, код коду ascii яких становить від 65 до 90, потраплять у кінцевий масив, який потім збирається за допомогою функції TEXTJOIN для створення кінцевої абревіатури або абревіатури.