
Общая формула
=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. Вы можете использовать этот подход для создания инициалов из имен или для создания сокращений. В этой формуле сохранятся только заглавные буквы, поэтому исходный текст должен включать слова с заглавной буквы. При необходимости вы можете использовать функцию ПРОПИСН для написания слов с заглавной буквы.
В показанном примере формула 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),""))
Объяснение
Работая изнутри, функция 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. Этот массив входит в функцию ПОИСКПОЗ как поисковый массив, а исходный массив кодов ascii предоставляется как поисковое значение.
Затем ПОИСКПОЗ возвращает либо число (в зависимости от позиции), либо ошибку # Н / Д. Числа представляют собой заглавные буквы, поэтому функция ЕЧИСЛО используется вместе с функцией ЕСЛИ для фильтрации результатов. Только символы, код ascii которых находится между 65 и 90, будут включены в окончательный массив, который затем будет повторно собран с помощью функции TEXTJOIN для создания окончательного сокращения или акронима.