Извлечение первого и последнего слова (Microsoft Excel)
У Реджи есть ячейка, содержащая три или более слов. (Количество слов может быть разным.) Ему нужна формула, позволяющая извлечь либо первое слово ячейки, либо последнее слово ячейки. Например, если ячейка содержит фразу «Реджи был здесь в 2012 году», то ему нужна формула для извлечения «Реджи» и одна для извлечения «2012».
Вы можете извлечь оба слова с помощью формул. Извлечь первое слово относительно просто. Все, что вам нужно сделать, это найти положение первого пробела во фразе, а затем извлечь то, что находится слева от него. Если предположить, что фраза написана на языке A1, можно использовать формулу:
=LEFT(A1,FIND(" ",A1)-1)
В принципе, получить последнее слово можно так же, только сложнее найти последний пробел в строке. Способ сделать это:
-
Подсчитайте количество пробелов. Замените последний пробел на другой символ (которого нет во фразе)
-
Затем найдите этот «другой персонаж»
-
Возьмите часть фразы справа от этого «другого символа»
«Другой символ», который можно использовать, — это первый символ ASCII (т.е. char (1)), который не печатается и вряд ли будет во фразе. Количество пробелов можно найти, взяв разницу между длиной фразы и длиной фразы без пробелов (используя SUBSTITUTE для замены всех пробелов пустой строкой):
LEN(A1)-LEN(SUBSTITUTE(A1," ",""))
Затем вы можете заменить последнее вхождение пробела на char (1):
SUBSTITUTE(A1," ",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1," ","")))
Затем вы можете НАЙТИ расположение char (1) в этой строке:
FIND(CHAR(1),SUBSTITUTE(A1," ",CHAR(1),LEN(A1)- LEN(SUBSTITUTE(A1," ",""))))
Первый символ последнего слова — это 1 символ после этого:
1+ FIND(CHAR(1),SUBSTITUTE(A1," ",CHAR(1),LEN(A1)- LEN(SUBSTITUTE(A1," ",""))))
Затем вы можете использовать функцию MID, чтобы извлечь часть строки, начинающуюся в этом месте, до конца строки. (Вам не нужно вычислять точную длину. Если вы выберете число больше, чем длина последнего слова, будет выбрано только последнее слово. Таким образом, вы можете начать с указанного выше места и извлечь количество символов в строка, чтобы убедиться, что у вас достаточно.):
=MID(A1,1+FIND(CHAR(1),SUBSTITUTE(A1," ",CHAR(1), LEN(A1)-LEN(SUBSTITUTE(A1," ","")))),LEN(A1))
Вы также можете, если хотите, создать определяемые пользователем функции для захвата нужных слов. Уловить первое слово очень просто:
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)
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (11984) применим к Microsoft Excel 97, 2000, 2002 и 2003.
Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:
link: / excelribbon-Extracting_First_and_Last_Words [Извлечение первых и последних слов]
.