从字符串中提取首字母(Microsoft Excel)
拉杰夫需要一个公式,该公式将提取一系列单词的前几个字母。例如,如果一个单元格包含文本“ Rajeev Kumar Pandey”,他想将字母“ RKP”提取到另一个单元格中。
序列中的单词数可能随单元而异。
有两种方法可以完成此任务。首先,假设您不想通过添加中间列来修改工作表的结构。该假设也排除了使用“文本到列”功能将原始字符串拆分为单个单词的情况。
该问题的关键是确保您的公式可以确定空格在原始字符串中的位置。您可能认为下面的公式可以完成此工作:
=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_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(8663)适用于Microsoft Excel 2007、2010和2013。您可以在以下旧版Excel菜单界面中找到本技巧的版本: