2017-02-05 75 views
3

我认为这个问题很棘手,但我想听听是否有人可能有解决方案。获取除关键词以外的每个单词的第一个字母

我需要创建拿起在名称列表中的每个单词的第一个字母的公式,例如:

中国电子科技大学

电子科大(下称 '', '中', '和', 'A',以避免可能的话)

我试了一下,到目前为止:

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

你已经试过了什么? – Guido

+0

Havnt到目前为止,部分工作的东西是: =(LEFT(H2)&MID(H2,FIND(“#”,SUBSTITUTE(H2&“”,“”,“#”,1))+ 1,1 )&MID(H2,FIND(“#”,SUBSTITUTE(H2&“”,“”,“#”,2))+ 1,1))&J2&M2 – Aabo

+0

@Aabo,你是否反对使用VBA?正如你从这些答案中可以看到的那样 - excel没有一个用内置函数做这件事的好方法。 – CallumDA

回答

0

步骤1:

使用替代删除任何你想放弃。

语法:

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

第二步:

在任何细胞保持值1(假设B1)。

第3步:

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

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

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

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

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

。 = LEFT(A1,SEARCH(“”,A1)-1) – Anup

2

问得好!我认为你最好的选择是使用VBA创建你自己的功能。下面的代码添加到一个新的模块中的VBA编辑器,你可以使用该功能对您的工作表是这样的:

=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 
1

好吧,我发现了一个有点荒谬的答案,它基本上连接了很多ifs来循环每个单词(VBA在这里更容易)。以下公式最多9个字。如果你的字符串有更多,你只需要添加一些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)),"") 
),"") 
+0

嗨,谢谢你。它实际上回答我的要求..我也可以理解公式.. 但是我可以看到只有一个单词的名称,例如: '阿拉巴马'应该只回答'A',在上面我得到一个空白的单元格? :/ 谢谢,K – Aabo

+0

@Aabo我已经调整过上面的公式,以便它现在也应该适用于一个单词字符串。 – LukasV

+0

你是否也用阿拉巴马州的A取代了A? – CallumDA

0

如果你使用的是Excel 2016或365,其中有可用的CONCAT功能,下面的公式将字符串的任意长度的工作:

=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

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

+0

不错,我一直在等'CONCAT'之类的东西。你的公式也非常整洁,但不幸的是,'CONCATENATE'不起作用。 – LukasV

相关问题