如果想要在 Excel 中查詢單字中各個字母的數量(如下圖),該如何處理?首先來看看如何產生A欄的內容。
儲存格A2:=CHAR(ROW(65:65))&", "&CHAR(ROW(97:97))
因為A的ASCII碼為65,a的ASCII碼為97,所以複製儲存格A2,往下貼上時,即可產生A,B,C,D,…及a,b,c,d,…。
以查詢Windows為例來查詢是否有d這個字母,可以藉由SUBSTITUTE函數:
=SUBSTITUTE("Windows","w","") = “Windos” (w被空白取代了)
------------------------------------------------------------------------------------------------------------------
SUBSTITUTE 函數:將文字字串中的 old_text 部分以新字串 new_text 取代。
語法:SUBSTITUTE(text, old_text, new_text, [instance_num])
Text:要取代字元的文字,或含有該文字之儲存格的參照。
Old_text:要取代的文字。
New_text:要用來取代 Old_text 的文字。
Instance_num:指定要將第幾個 Old_text 取代為 New_text。
------------------------------------------------------------------------------------------------------------------
=SUBSTITUTE(SUBSTITUTE("Windows","w","") ,"W","")
=SUBSTITUTE("Windos","W","")
="indos" (W被空白取代了)
LEN("Windows")-LEN(SUBSTITUTE(SUBSTITUTE("Windows","w","") ,"W",""))
=LEN("Windows")-LEN(“indos")
=7-5
=2 (表示有2個W或w字母)
所以:
儲存格B2:=LEN(B$1)-LEN(SUBSTITUTE(SUBSTITUTE(B$1,CHAR(ROW(65:65)),""),CHAR(ROW(97:97)),""))
複製儲存格B2至儲存格B2:F27,即可求出所有的字母所佔的數量。
如果想要將沒有任何字母的位置,不要顯示0,而以空白顯示,則可以改為下列式子:
儲存格B2:=IF((LEN(B$1)-LEN(SUBSTITUTE(SUBSTITUTE(B$1,CHAR(ROW(65:65)),""),CHAR(ROW(97:97)),"")))=0,"",LEN(B$1)-LEN(SUBSTITUTE(SUBSTITUTE(B$1,CHAR(ROW(65:65)),""),CHAR(ROW(97:97)),"")))
其實如果以這個例子是不分大寫者,可以先將其改為大寫或小寫再套入原來的式子:
儲存格B2:=LEN(B$1)-LEN(SUBSTITUTE(UPPER(B$1),CHAR(ROW(65:65)),""))
或
儲存格B2:=LEN(B$1)-LEN(SUBSTITUTE(LOWER(B$1),CHAR(ROW(97:97)),""))