Получение начальных букв из строки (Microsoft Excel)
Радживу нужна формула, которая будет извлекать первые буквы ряда слов. Например, если ячейка содержит текст «Раджив Кумар Панди», он хотел бы извлечь в другую ячейку буквы «РКП».
Количество слов в серии может варьироваться от ячейки к ячейке.
Есть несколько способов подойти к этой задаче. Для начала предполагается, что вы не хотите изменять структуру своего рабочего листа, добавляя промежуточные столбцы. Это предположение также исключает использование функции Text to Columns для разделения исходной строки на отдельные слова.
Ключ к проблеме — убедиться, что ваша формула может определять, где находятся пробелы в исходной строке. Вы можете подумать, что формула, подобная следующей, сработает:
=LEFT(A1,1)&MID(A1,FIND(" ",A1,1)+1,1)&MID(A1, FIND(" ",A1,FIND(" ",A1,1)+1)+1,1)
Эта формула работает частично. Он отлично работает, если в исходной строке есть два пробела, разделяющие три слова. Если слов меньше, формула возвращает ошибку. Если есть еще слова, он возвращает только первые буквы первых трех слов (игнорирует все, что находится после третьего слова).
Это означает, что формула должна не только проверять наличие пробелов, но и обрабатывать ошибки, если пробелов нет или если их слишком мало. Проверка ошибок означает, что формула становится намного длиннее:
=IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ", A1)+1)+1)+1)+1,1)),IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1)), IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)), IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)), IF(ISERR(LEFT(A1,1)),"",LEFT(A1,1)),LEFT(A1,1) &MID(A1,SEARCH(" ",A1)+1,1)),LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)), LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1)),LEFT(A1,1) &MID(A1,SEARCH(" ",A1)+1,1)&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1) &MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1) +1)+1)+1,1))
Эта формула будет правильно обрабатывать от 0 до 5 слов в строке. Также предполагается, что строка не начинается и не заканчивается пробелом и не содержит нескольких пробелов между словами. Если вы хотите обработать большее количество слов или другие возможные сложности (например, количество пробелов между словами), то лучше всего использовать пользовательскую функцию.
Существует множество способов, которыми пользовательская функция может извлекать ведущие символы из слов строки. Фактически, я получил довольно много вариантов, которые достигают того же самого. Однако следующий пример является, пожалуй, самым кратким кодом, который я встречал:
Function Initials(Raw As String) As String Dim Temp As Variant Dim J As Integer Application.Volitile Temp = Split(Trim(Raw)) For J = 0 To UBound(Temp) Initials = Initials & Left(Temp(J), 1) Next J End Function
Функция Split «разрывает» строку в зависимости от того, где в ней встречаются пробелы. Отдельные слова в строке помещаются в массив (в данном случае Temp), откуда вы можете получить доступ к отдельным словам. Чтобы использовать функцию на рабочем листе, просто используйте что-то вроде этого:
=Initials(A1)
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (8663) применим к Microsoft Excel 2007, 2010 и 2013. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:
link: / excel-Pulling_Initial_Letters_from_a_String [Получение начальных букв из строки]
.