除了一些关键字之外,还可以获取句子中每个单词的首字母

我认为这是一个棘手的问题,但我想听听有没有人可以有解决办法。

我需要创build一个公式来获取名称列表中每个单词的第一个字母,例如:

中国电子科技大学

电子科技大学(如果可能,应避免使用'''',''和','a')

我到目前为止所尝试的是:

=(LEFT(H2)&MID(H2,FIND("#",SUBSTITUTE(H2&" "," ","#",1))+1,1)&MID(H2,FIND("#",SUBSTITUTE(H2&" "," ","#",2))+1,1))&J2&M2 

好问题! 我认为你最好的select是使用VBA创build你自己的function。 将下面的代码添加到VBA编辑器中的新模块中,您可以在工作表上使用以下function:

 =FirstLetters(A1) 

根据你的例子,这将返回UESTC

 Function FirstLetters(str As String) Dim words As Variant Dim resultStr As String Dim i As Integer words = Split(str) For i = 0 To UBound(words) Select Case words(i) Case "the", "of", "and", "a" 'ignore Case Else resultStr = resultStr & Left(words(i), 1) End Select Next i FirstLetters = UCase(resultStr) End Function 

好吧,我发现了一个有点可笑的答案,它基本上连接了很多ifs来循环每个单词(VBA在这里更容易)。 下面的公式可达9个字。 如果你的string有更多,你只需要添加一些FIND(A1," ")+1 。 如果公式不适合你,请删除它的回报。

 =IFERROR(UPPER( IF(LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1>=1,IFERROR(IF(SUM(--(LEFT(A1,FIND(" ",A1)-1)={"the","of","a","and"})),"",LEFT(A1,1)),LEFT(A1,1)),"")& IF(LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1>=2,IF(SUM(--(MID(A1,FIND(" ",A1)+1,IFERROR(FIND(" ",A1,FIND(" ",A1)+1),LEN(A1))-(FIND(" ",A1)+1))={"the","of","a","and"})),"",MID(A1,FIND(" ",A1)+1,1)),"")& IF(LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1>=3,IF(SUM(--(MID(A1,FIND(" ",A1,FIND(" ",A1)+1)+1,IFERROR(FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1),LEN(A1))-(FIND(" ",A1,FIND(" ",A1)+1)+1))={"the","of","a","and"})),"",MID(A1,FIND(" ",A1,FIND(" ",A1)+1)+1,1)),"")& IF(LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1>=4,IF(SUM(--(MID(A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1,IFERROR(FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1),LEN(A1))-(FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1))={"the","of","a","and"})),"",MID(A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1,1)),"")& IF(LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1>=5,IF(SUM(--(MID(A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1,IFERROR(FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1),LEN(A1))-(FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1))={"the","of","a","and"})),"",MID(A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1,1)),"")& IF(LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1>=6,IF(SUM(--(MID(A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1)+1,IFERROR(FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1)+1),LEN(A1))-(FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1)+1))={"the","of","a","and"})),"",MID(A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1)+1,1)),"")& IF(LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1>=7,IF(SUM(--(MID(A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1)+1)+1,IFERROR(FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1)+1)+1),LEN(A1))-(FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1)+1)+1))={"the","of","a","and"})),"",MID(A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1)+1)+1,1)),"")& IF(LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1>=8,IF(SUM(--(MID(A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1)+1)+1)+1,IFERROR(FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1)+1)+1)+1),LEN(A1))-(FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1)+1)+1)+1))={"the","of","a","and"})),"",MID(A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1)+1)+1)+1,1)),"")& IF(LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1>=9,IF(SUM(--(MID(A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1)+1)+1)+1)+1,IFERROR(FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1)+1)+1)+1)+1),LEN(A1))-(FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1)+1)+1)+1)+1))={"the","of","a","and"})),"",MID(A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1,FIND(" ",A1)+1)+1)+1)+1)+1)+1)+1)+1,1)),"") ),"") 

步骤1:

使用替代来删除你想丢弃的东西。

句法:

 SUBSTITUTE(text, old_text, new_text, [instance_num]) 

第2步:

在任何单元格中保持值1(假设B1)。

第3步:

用下面的公式来得到第一个字母。

 =IF(LEN(A1)>=B1,RIGHT(LEFT(A1,B1),1)," ") 

A1是你的input,B1的值是1.如果你想要第一个字母。 如果你想要第二个字母B1的值应该是2 ..等等。

如果你想有第一个字,那么:

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

如果您使用具有可用CONCATfunction的Excel 2016或365,则以下公式将适用于任意长度的string:

 =LEFT(A1,1) & CONCAT(IF(MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1," the "," "), " of "," "), " a "," "), " and ", " "),ROW(OFFSET($A$1,0,0,LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1," the "," "), " of "," "), " a "," "), " and ", " ")),1)),1)=" ",MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1," the "," "), " of "," "), " a "," "), " and ", " "),ROW(OFFSET($A$1,1,0,LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1," the "," "), " of "," "), " a "," "), " and ", " ")),1)),1),"")) 

请注意,这是一个数组公式,必须通过双击进入单元格,粘贴公式,然后按CTRL+SHIFT+ENTER

它将始终包含第一个单词的第一个字母,即使它是要排除的关键字之一。 所有其他关键字被排除。 通常,第一个单词的第一个字母应该总是包含在内,但是如果您还需要删除它,我可以进一步修改公式。