Reggie的单元格包含三个或更多单词。 (单词的数量可能会有所不同。)他需要一个公式,使他可以提取单元格的第一个单词或单元格的最后一个单词。例如,如果该单元格包含短语“ Reggie在2012年在这里”,则他需要一个公式来提取“ Reggie”,并需要一个公式来提取“ 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_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(11984)适用于Microsoft Excel 97、2000、2002和2003。您可以在以下位置找到用于Excel功能区界面(Excel 2007及更高版本)的本技巧的版本:

链接:/ excelribbon-Extracting_First_and_Last_Words [提取第一个和最后一个词]。