PS,我是用office2003的excel完成這個(gè)操作的,office2000可能有些操作有些不同,不妨試一下。
首先先要說幾個(gè)公式,明白了這幾個(gè)公式后,就能簡單完成了。
?、俸瘮?shù)【left】
作用:提取數(shù)據(jù)左邊n個(gè)數(shù)字的內(nèi)容
默認(rèn)公式:=left(text, [num_chars])
翻譯公式:=left(數(shù)據(jù),n[數(shù)字])
舉例:=left("Hello",2) 輸出結(jié)果為最開始的2個(gè)字母“He”
②函數(shù)【right】
作用:提取數(shù)據(jù)右邊n個(gè)數(shù)字的內(nèi)容
默認(rèn)公式:=right(text, [num_chars])
翻譯公式:=right(數(shù)據(jù),n[數(shù)字])
舉例:=right("Hello",2) 輸出結(jié)果為最末尾的2個(gè)字母“lo”
好了,利用這兩個(gè)公式,就可以做到簡單的提取一個(gè)身份證號(hào)碼中的日期了。
舉例,某人身份證為310123190102039527(18位),輸入到"A1"單元格,建議用把單元格改成"文本",不然會(huì)顯示為科學(xué)計(jì)數(shù)法。
【單元格改成文本的方法:鼠標(biāo)右擊"A1"單元格,選擇“設(shè)置單元格格式(F)...”,在“單元格格式”對(duì)話框中,選擇“數(shù)字”標(biāo)簽,“分類(C)”里選擇“文本”,點(diǎn)“確定”】
那用公式套用的話,先用left吧,最后4位是不要的,所以提取左邊14位。這個(gè)身份證號(hào)碼已經(jīng)輸入到"A1"單元格,那么在"B1"單元格可以這樣輸入:=left(A1,14),那出現(xiàn)的結(jié)果就是“31012319010203”,然后你可以用right命令提取"B2"單元格里后8位數(shù)字,就可以提取出生日代碼了。比如我們?cè)?C1"單元格里輸入=right(B1,8),出現(xiàn)的結(jié)果就是“19010203”,基本工程完成了。
接下來是進(jìn)階教程,其實(shí),完全可以把2個(gè)命令合并使用,比如,我們?cè)?D1"單元格里這樣輸入:=right(left(A1,14),8),看看結(jié)果如何?是不是直接出現(xiàn)了正確結(jié)果?
其實(shí),如果left和right兩個(gè)命令同時(shí)用到,可以用一個(gè)更好的命令【mid】來代替,接下來我來說一下mid的用法:
?、酆瘮?shù)【mid】
作用:提取數(shù)據(jù),從左邊起第n個(gè)數(shù)字開始,長度為m的內(nèi)容
默認(rèn)公式:=mid(text, start_num, num_chars)
翻譯公式:=mid(數(shù)據(jù),n[開始第n位],m[長度])
舉例:=mid("Hello",2,3) 輸出結(jié)果為從第二位開始,長度為3的字母“ell”
那樣,剛剛復(fù)雜的left和right嵌套,可以在"E1"單元格輸入公式=mid(A1,7,8)試試,就算出了正確的結(jié)果“19010203”
但是,又出現(xiàn)問題了,這樣的日期,一個(gè)8位的數(shù)字,其實(shí)不是excel正式的日期格式,正式的日期格式應(yīng)該為“1901-02-03”,那如何操作呢?
我的思路是這樣的,分別提取出“年”、“月”、“日”,然后利用公式把年月日連接起來,就成為了正式的日期格式,接下來要引入第四個(gè)公式【date】
?、芎瘮?shù)【date】
作用:提取“年”、“月”、“日”,使其轉(zhuǎn)化成日期格式
默認(rèn)公式:=date(year, month, day)
翻譯公式:=date(x[年],y[月],z[日])
舉例:=date(1901,02,03) 輸出結(jié)果為日期格式的“1901-2-3”
接下來,按照如下操作提取出年月日:
提取年,在"F1"單元格輸入:=mid(A1,7,4),輸出結(jié)果為“1901”。
提取月,在"G1"單元格輸入:=mid(A1,11,2),輸出結(jié)果為“02”。
提取日,在"H1"單元格輸入:=mid(A1,13,2),輸出結(jié)果為“03”。
最后合并,在"H1"單元格輸入:=date(F1,G1,H1),看看輸出結(jié)果如何?其實(shí),這里也可以用date和mid的嵌套公式,=date(mid(A1,7,4),mid(A1,11,2),mid(A1,13,2))直接提取出日期。
不過又出現(xiàn)一個(gè)問題,如果有些人的身份證號(hào)碼是15位的呢?那么如何處理呢?其實(shí)一樣的,15位身份證號(hào)碼生日只有從第7位開始,6個(gè)數(shù)字,如果一口氣寫成嵌套公式,就是=date(mid(單元格,7,2),mid(單元格,9,2),mid(單元格,11,2),比如我再舉例一個(gè)身份證號(hào)碼:310123010203952,把這個(gè)字符串輸入"A2"單元格(記得先把A2單元格轉(zhuǎn)換成文本格式),然后在B2單元格輸入=date(mid(A2,7,2),mid(A2,9,2),mid(A2,11,2))。其實(shí),date里面的數(shù)據(jù)是date(01,02,03),公式會(huì)自動(dòng)轉(zhuǎn)換成1901-2-3,其實(shí)這里涉及到一個(gè)千年蟲問題,其實(shí)現(xiàn)在已經(jīng)是2010年,如果你把2001年2月3日簡寫成01年2月3日,由date命令就會(huì)轉(zhuǎn)化成1901-2-3,以后在輸入中一定要注意。不過有點(diǎn)可以放心,老的15位身份證不可能出現(xiàn)在2000年以后,也就是它2位數(shù)的年份正好直接轉(zhuǎn)換成19XX,也不用多考慮,直接套用date公式。如果為了再嚴(yán)謹(jǐn)一些,確保日期為19XX年份的,可以在把公式改成=date("19"&mid(A2,7,2),mid(A2,9,2),mid(A2,11,2),這樣就強(qiáng)制是19XX年了。其實(shí)這里大可不必這樣做。
現(xiàn)在問題又來了,如果我電腦里的數(shù)據(jù),既有18位的,又有15位的,有什么辦法只用一個(gè)公式搞定它?答案是有的。這里又要引入一個(gè)判別函數(shù)【if】
⑤函數(shù)【if】
作用:判別,如果成立,輸出公式/結(jié)果1;如果不成立,輸出公式/結(jié)果2
默認(rèn)公式:=if(logical_test, [value_if_ture], [value_if_false])
翻譯公式:=if(判別式, 公式/結(jié)果1[判別式為真], 公式/結(jié)果2[判別式結(jié)果為假])
舉例1:=if(1+2=3,"答案正確","答案錯(cuò)誤") 輸出結(jié)果“答案正確”【1+2=3,結(jié)果為真,所以輸出結(jié)果1】
舉例2:=if(false,"正確嗎?","錯(cuò)誤嗎?") 輸出結(jié)果“錯(cuò)誤嗎?”【false直接判別為假,所以輸出結(jié)果2】
舉例3:=if(0,"1是正確","0是錯(cuò)誤") 輸出結(jié)果“0是錯(cuò)誤”【0直接判別為假(其他數(shù)字例如1、2、3的結(jié)果都為真),所以輸出結(jié)果2】
說個(gè)題外話if語句比較經(jīng)典,我多舉了幾個(gè)例子,我經(jīng)常用它來核對(duì),比如有2列數(shù)字或者姓名,我要確保它們的位置一一對(duì)應(yīng),我就可以用if來判斷,比如這兩列分別是A列和B列,我在C1單元格輸入=if(A1=B1,"","X")然后選中C1單元格,鼠標(biāo)按住這個(gè)單元格邊框右下角的小黑方塊往下拉(或者雙擊)可以直接判斷出A列和B列的數(shù)據(jù)是否一樣。
這里if怎么用呢?對(duì)了,就是先在判別式里判斷出身份證的長度,對(duì)了,還要說判斷長度的公式【len】
⑥函數(shù)【len】
作用:輸出結(jié)果為字符長度
默認(rèn)公式:=len(text)
翻譯公式:=len(數(shù)據(jù))
舉例:=len("Hello") 輸出結(jié)果為“5”
那開始用if語句來完成這個(gè)工作,比如我新建了一個(gè)表格,隨便輸入了如下4個(gè)身份證號(hào)碼
可以用LEN(A2)=18作為if語句的判別式,如果為真,輸出結(jié)果1,即18位身份證的提取公式date(mid(A2,7,4),mid(A2,11,2),mid(A2,13,2)),那在結(jié)果2中輸入15位的身份證判別式date(mid(A2,7,2),mid(A2,9,2),mid(A2,11,2))。寫在"B2"單元格中,顯示出的結(jié)果為“9748”。這是為什么勒?因?yàn)锽2單元格的“單元格格式”不對(duì),鼠標(biāo)右擊"B2"單元格,選擇“數(shù)字”標(biāo)簽,“分類 (C)”中的“日期”,確定即可,結(jié)果就對(duì)了?!井?dāng)然,如果你喜歡,你可以選擇比如“XXXX年XX月XX日”的格式,也可以只顯示年月等】
接下來就按住"B2"單元格右下角的小黑方塊往下拉(雙擊小方塊效果更好),結(jié)果就都出來了。
這里再展開一下,為什么一開始"B2"單元格輸出結(jié)果為9748呢?怎么說呢?我只能用一種自己理解的非官方回答來說明,其實(shí)你們看到單元格的日期是個(gè)假象,其實(shí)真正背后的內(nèi)容是一個(gè)數(shù)字。不妨可以做個(gè)實(shí)驗(yàn),你隨便找個(gè)單元格,輸入數(shù)字“1”,然后修改“單元格格式”,改成“日期”格式,看到結(jié)果是什么?“1900-1-1”,就是說數(shù)字“1”對(duì)應(yīng)的日期是“1900-1-1”。然后,再輸入一個(gè)日期“9999-12-31”,這個(gè)日期是現(xiàn)有電腦能判斷出最“將來”的日期,然后修改“單元格格式”,改成“常規(guī)”,結(jié)果就是“2958465”,這就是日期格式的最大值和最小值。
而且經(jīng)過我的測試,存在小數(shù)點(diǎn)的數(shù)字也是可以轉(zhuǎn)換成日期的,小數(shù)點(diǎn)后的內(nèi)容就是時(shí)間。例如“123.456”,轉(zhuǎn)化成日期格式【注:這里的日期格式要帶時(shí)間的】后輸出結(jié)果為“1900-5-2
另外,如果你輸入“0”,然后轉(zhuǎn)化成日期格式,是不成立的,“1900-1-0”這個(gè)數(shù)字自動(dòng)左對(duì)齊,也就是說這個(gè)數(shù)據(jù)已經(jīng)成為了文本格式,默認(rèn)日期格式是右對(duì)齊的。當(dāng)然,你輸入類似“1856-5-9”之類的1900之前的日期格式,是死活不會(huì)轉(zhuǎn)變成日期格式的,只會(huì)默認(rèn)成為文本格式,自動(dòng)左對(duì)齊。如果輸入“-1”再轉(zhuǎn)換成日期格式就更離譜了,輸出結(jié)果直接是“##########”。當(dāng)然,超過最大值的“2958465”后一個(gè)數(shù)字“2958466”轉(zhuǎn)化成日期格式,也是輸出“##########”,不存在。
所以說,以前1999年面臨最大的問題是“千年蟲”問題,可能到了2000年,日期顯示為1900年。不過現(xiàn)在都已經(jīng)解決了這個(gè)問題。但是,在比較遠(yuǎn)的未來,將會(huì)遇到“萬年蟲”問題,當(dāng)然,這離我們很遙遠(yuǎn),那時(shí)候地球在不在還是個(gè)問題,不過我感覺,這個(gè)“萬年蟲”問題可能比之前的“千年蟲”問題更嚴(yán)重,也許,那時(shí)候我們的身份證號(hào)碼要成為了19位也說不定。
聯(lián)系客服