У Реджи есть ячейка, содержащая три или более слов. (Количество слов может быть разным.) Ему нужна формула, позволяющая извлечь либо первое слово ячейки, либо последнее слово ячейки. Например, если ячейка содержит фразу «Реджи был здесь в 2016 году», то ему нужна формула для извлечения «Реджи» и одна для извлечения «2016».

Вы можете извлечь оба слова с помощью формул. Извлечь первое слово относительно просто. Все, что вам нужно сделать, это найти положение первого пробела во фразе, а затем извлечь то, что находится слева от него. Если предположить, что фраза написана на языке A1, можно использовать формулу:

=LEFT(A1,FIND(" ",A1)-1)

Чтобы извлечь последнее слово, вам понадобится немного другая формула:

=TRIM(RIGHT(SUBSTITUTE(TRIM(A1)," ",REPT(" ",255)),255))

Эта формула заменяет пробелы на строки из 255 пробелов. Затем он находит последние 255 символов и обрезает символы слева, оставляя последнее слово.

Вы также можете, если хотите, создать определяемые пользователем функции для захвата нужных слов. Уловить первое слово очень просто:

Function FirstWord(c As String)

Dim arr

arr = Split(Trim(c), " ")

FirstWord = arr(LBound(arr))

End Function

Функция использует функцию Split, чтобы разделить все, что находится в указанной ячейке, используя второй параметр («») в качестве разделителя. Каждый элемент в массиве (arr) затем содержит часть исходной строки. В этом случае возвращается первый элемент (указанный LBound) массива — первое слово.

Поскольку слова из фразы помещаются в массив, вы можете использовать лишь небольшую вариацию функции для возврата последнего слова:

Function LastWord(c As String)

Dim arr

arr = Split(Trim(c), " ")

LastWord = arr(UBound(arr))

End Function

Обратите внимание, что, по сути, единственное реальное изменение функции — это использование UBound вместо LBound. Функция UBound определяет последний элемент массива. Вы можете использовать обе эти функции на листе следующим образом:

=FirstWord(A1)

=LastWord(A1)

При желании вы можете обойтись без функции Split и вместо этого использовать другие функции, связанные со строками:

Function GetFirst(c As String)

GetFirst = Left(c, InStr(c, " ") - 1)

End Function
Function GetLast(c As String)

GetFirst = Mid(c, InstrRev(c, " ") + 1)

End Function

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (11985) применим к Microsoft Excel 2007, 2010, 2013 и 2016.

Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Extracting_First_and_Last_Words [Извлечение первых и последних слов].