2017-02-05 76 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

相關問題