網(wǎng)絡(luò)上介紹了許多在Excel軟件中,用身份證號(hào)碼提取年齡的公式,似乎用很簡單的公式就能計(jì)算出周歲。
但是經(jīng)過筆者的嘗試真的沒有那么簡單,用那簡單的公式計(jì)算出來的周歲往往是錯(cuò)的,不準(zhǔn)確的。今天晚上我就跟身份證提取周歲的操作較了半天勁兒,碰到了各種疑難雜癥,最終經(jīng)過我的探索,得到了一些收獲,在此總結(jié)如下,供大家參考。
一,身份證號(hào)不能用于公式計(jì)算,提取信息,如何處理?
首先發(fā)現(xiàn)從其他表格中拷貝過來的身份證號(hào)出了問題,怎么辦?
在此過程中我遇到的第1個(gè)問題就是身份證號(hào)碼表面上看起來是文本,但是輸入公式后就是不能計(jì)算,這說明從其他表格身份證那一列拷貝過來的的身份證號(hào)碼本身就有問題,不是合格的,可以供excel公式計(jì)算引用的數(shù)據(jù)。經(jīng)過使用某工具檢驗(yàn),發(fā)現(xiàn)這些身份證號(hào)果然都是不合格的數(shù)據(jù)。
這可怎么辦?怎樣把這些不合規(guī)的身份證號(hào)轉(zhuǎn)換成合規(guī)的身份證號(hào)呢?想起了我的老辦法,就是先找個(gè)中介過渡一下,把它們處理成合規(guī)的數(shù)據(jù)。具體來說就是新建一篇word文檔,在word文檔中看看這些身份證號(hào)有什么格式上的問題,然后在word中利用批量查找替換的方法,去掉他們不合規(guī)的格式,把這些身份證號(hào)處理成為純粹的,合規(guī)的數(shù)據(jù)。說干就干。
1,首先新建一篇空白的word文檔,把身份證號(hào)從原始Excel表格中復(fù)制過來,以“僅粘貼文本”的方式粘貼過來。
果然就看到了問題,就是這些身份證號(hào)在格式上有貓膩兒,前后都多了許多符號(hào)。
2,使用word文檔查找替換功能,格式上的符號(hào)也能查找替換,把身份證號(hào)前后的符號(hào)全部去掉。
3,接下來該做什么呢?
就是把處理好的身份證號(hào)碼的文本轉(zhuǎn)變成一列表格,以便于復(fù)制粘貼到 Excel表格中去。
具體操作看這里:
我們終于建立了只有一列的表格,把這列數(shù)據(jù)全部選中,把這一列身份證號(hào)碼數(shù)據(jù)“復(fù)制”“粘貼”到excel表格里去,就是可以用于公式計(jì)算的合規(guī)的數(shù)據(jù)了。
由于身份證數(shù)字比較多,在往Excel單元格粘貼的時(shí)候,記得提前先把那一列設(shè)置成為純文本格式。粘貼過去的身份證號(hào)碼才沒有問題。而且在Excel單元格里粘貼數(shù)據(jù)的時(shí)候像這樣粘貼。
不是
二,得使用比較靠譜的身份證提取周歲計(jì)算公式,網(wǎng)上羅列的個(gè)別簡單的公式都是有瑕疵的,結(jié)果不準(zhǔn)確。比如這個(gè):
在要計(jì)算年齡的單元格內(nèi)輸入YEAR(TODAY())-MID(F2,7,4),
問題在于:這個(gè)公式從身份證號(hào)碼中提取出來的只有年份的4位數(shù),這種計(jì)算方法是不準(zhǔn)確的,得到的結(jié)果只能是個(gè)概數(shù)。
因?yàn)楦鶕?jù)身份證號(hào)碼包含的出生日期判斷周歲,必須精確到出生的年月日那一天,不到那一天要減1,過了那一天(包含那一天)才是拿今年的數(shù)值減去身份證出生年的數(shù)值。
所以上面那個(gè)公式不可以用。
來自網(wǎng)絡(luò)經(jīng)過驗(yàn)證準(zhǔn)確的三個(gè)公式,保存在此,供分享和我自己學(xué)習(xí),在此感謝這些前輩。
1,=DATEDIF(IF(LEN(F2)=18,DATE(MID(F2,7,4),MID(F2,11,2),MID(F2,13,2)),IF(LEN(F2)=15,DATE("19"&MID(F2,7,2),MID(F2,9,2),MID(F2,11,2)),"")),TODAY(),"Y")
看到這個(gè)公式中包含了對(duì)身份證號(hào)碼長度的判斷,適用于包含著15位號(hào)碼的身份證號(hào)碼的計(jì)算,不過這種應(yīng)用場(chǎng)景應(yīng)該很少了。
2,
=IF((TODAY()-DATE(YEAR(TODAY()),MID(F2,11,2),MID(F2,13,2)))<0,(YEAR(TODAY())-MID(F2,7,4)-1),YEAR(TODAY())-MID(F2,7,4))
這是一位高人用一己之力構(gòu)造的判斷公式,包含著邏輯判斷,沒有過生日那一天,年份減1,過了生日那一天,不用減1.
3,最簡單的公式來了,就用這兩個(gè)中的一個(gè)吧。
前提是Excel版本支持。
=DATEDIF(TEXT(MID(F2,7,8),"0-00-00"),NOW(),"y")
或者=DATEDIF(TEXT(MID(B2,7,8),"0-00-00"),TODAY(),"y")
學(xué)習(xí)探索的過程很累,但是值得。
歇會(huì)兒。[啤酒]
]]>