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

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

本技巧(11985)适用于Microsoft Excel 2007、2010、2013和2016。您可以在此处为Excel的较旧菜单界面找到此技巧的版本:

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