計算A1單元格的字符串中大寫字母S的個數(shù),可以使用如下公式:=LEN(A1)-LEN(SUBSTITUTE(A1,”S”,””))。該公式就是使用SUBSTITUTE函數(shù)將大寫字母S用空字符替換,就是將所有的S剔除,然后再比較A1的字符數(shù)和去除S后的字符數(shù),差值就是大寫字母S的個數(shù),由于SUBSTITUTE函數(shù)對字符串的大小寫是敏感的,所有如果要計算A1單元格中所有字母s的數(shù)量(大小寫都包括),則公式應該是:=LEN(A1)-LEN(SUBSTITUTE(SUBSTITUTE(A1,”S”,””),”s”,””))。
計算特定子字符串在某單元格(字符串)中出現(xiàn)的次數(shù),首先也是用空字符替代子字符串,然后再計算替代前后的字符數(shù)的差值,得到的結果就是包含子字符串的字符數(shù),用這個字符數(shù)在除以子字符串的長度,就是子字符串出現(xiàn)的次數(shù)了,基本公式為:=(LEN(A1)-LEN(SUBSTITUTE(A1,B1,””)))/LEN(B1),這個公式表示在A1字符串中B1子字符串出現(xiàn)的次數(shù)。
但是這個公式并不嚴謹,因為SUBSTITUTE函數(shù)區(qū)分大小寫,如果A1和B1中的字符大小寫格式不一樣,而你又不想?yún)^(qū)分大小寫,上面的公式就需要一些改進:=(LEN(A1)-LEN(SUBSTITUTE(UPPER(A1),UPPER(B1),””))),同樣上面公式中可以用LOWER函數(shù)代替UPPER函數(shù),目的就是在替換(去除子字符串)時將A1和B1中的字符串統(tǒng)一大小寫的格式。
有些會計制度規(guī)定使用一個尾隨的減號(負號)來表示一個負值,如果你將這樣的數(shù)據(jù)導入Excel,那些帶有尾隨減號的數(shù)據(jù)會被解釋為文本。下面的公式可以在導入數(shù)據(jù)后檢查是否有尾隨減號的數(shù)據(jù),如果有則將其減號刪除并返回一個負數(shù),例如將A1單元格中的365.48-改變成-365.48:=IF(RIGHT(A1,1)=”-”,LEFT(A1,LEN(A1)-1)*-1,A1)。
用序數(shù)來表示數(shù)字,比如今天是某月份的第一天用1st來表示(尤其是使用英語的國家),我們就是將1(數(shù)字)轉換為1st(字符串),方法就是在數(shù)字后面添加一個后綴,后綴一共有四種,在末位是1、2、3時分別添加st、nd、rd,其余添加th,不過還有特殊的,就是11、12、13也添加后綴th,如此而已,用Excel公式實現(xiàn)的方法如下:
=A1&IF(OR(VALUE(RIGHT(A1,2))={11,12,13}),”th”,IF(OR(VALUE(RIGHT(A1))={1,2,3}),CHOOSE(RIGHT(A1),”st”,”nd”,”rd”),”th”))
其中VALUE函數(shù)的功能是將代表數(shù)字的文本字符串轉換成數(shù)字,有一個參數(shù),是文本或者包含要轉換文本的引用,CHOOSE函數(shù)的功能是根據(jù)給定的索引值,從參數(shù)串中選擇相應的值或操作,它的參數(shù)數(shù)量在從2到255之間,其中第一個參數(shù)必需的,是指定所選定的值,該值須為1到254之間的數(shù)字(整數(shù),如果非整數(shù)會自動截尾取整),這個數(shù)字表示一個取值的序號,該參數(shù)是多少,就執(zhí)行后面哪一項的操作(從第二個參數(shù)開始計算),第二個參數(shù)是必需的,其后是可選的,例如=CHOOSE(2,A1,A2,A3,A4)中第一個參數(shù)2表示,執(zhí)行后面第二個操作,該公式就返回A2單元格的值。
下面公式根據(jù)單元格A1中的數(shù)字返回對應的列名的字母(從A到XFD),例如A1單元格的內(nèi)容是30,公式返回值的是第30列的字母AD:=LEFT(ADDRESS(1,A1,4),FIND(1,ADDRESS(1,A1,4))-1)。其中ADDRESS函數(shù)的功能是創(chuàng)建一個以文本方式對工作簿某一單元格的引用,該函數(shù)的參數(shù)中前兩個數(shù)值表示該單元格的行號和列號,本例中1是行號,A1單元格包含的值是列號,后面還有三個可選參數(shù),第三個參數(shù)是一個數(shù)值,是返回的引用類型,默認1表示絕對單元格引用(如$A$1),2表示絕對行號相對列號(A$1),3表示相對行號絕對列號($A1),4是相對單元格引用(A1),第四個參數(shù)是邏輯值,如果是TRUE,表示返回A1樣式;如果是FALSE,返回R1C1樣式引用,默認為TRUE,最后一個參數(shù)若存在,則是一個文本值,指定外部引用的工作表名稱,如=ADDRESS(1,1,,,”Sheet2”) 返回 Sheet2!$A$1,如果忽略該參數(shù)返回的是當前工作表的單元格。
回頭我們看看上面的公式,我們會發(fā)現(xiàn)該公式?jīng)]有檢查錯誤,就是說如果A1單元格中的數(shù)值大于16384或者小于1,該公式的返回值是#VALUE!,我們要處理一下錯誤,如果出現(xiàn)上述情況可以返回一個“Invalid Column”(無效列),公式如下:=IFERROR(LEFT(ADDRESS(1,A1,4),FIND(1,ADDRESS(1,A1,4))-1),”InvalidColumn”),IFERROR函數(shù)的功能是如果第一個參數(shù)的值(表達式)正確返回自身的值,如果錯誤則返回第二個參數(shù)的指定值,兩個參數(shù)都是必需的。注意:該公式在Excel2003并不適用,因為沒有IFERROR函數(shù),如果要想在2003以前的版本中實現(xiàn)該返回值,公式如下:
=IF(ISERR(LEFT(ADDRESS(1,A1,4),FIND(1,ADDRESS(1,A1,4))-1)),”InvalidColumn”,LEFT(ADDRESS(1,A1,4),FIND(1,ADDRESS(1,A1,4))-1)),這里的ISERR函數(shù)的功能是判斷相應的表達式是否返回錯誤值(不包括#N/A),如果是返回TRUE,不是返回FALSE,另外還有許多功能相似的以IS開頭的函數(shù),(ISBLANK,ISERROR,ISLOGICAL,ISNA,ISNONTEXT,ISNUMBER,ISREF,ISTEXT)這類函數(shù)都是判斷相應的值,返回TRUE或FALSE,以后就不一一解釋了。
下面公式就是從完整的給定路徑中提取文件名,例中的系統(tǒng)路徑分隔符是默認的反斜杠(”\”),如果是其他格式的分隔符就會返回錯誤。
=MID(A1,FIND(“*”,SUBSTITUTE(A1,”\”,”*”,LEN(A1)-LEN(SUBSTITUTE(A1,”\”,””))))+1,LEN(A1))
具體實現(xiàn)過程就是先計算反斜杠的個數(shù),再用星號替換最后一個反斜杠,在再找到星號的位置后,然后從后面開始取值,就是這么實現(xiàn)的。