網絡上介紹了許多在Excel軟件中,用身份證号碼提取年齡的公式,似乎用很簡單的公式就能計算出周歲。
但是經過筆者的嘗試真的沒有那麼簡單,用那簡單的公式計算出來的周歲往往是錯的,不準确的。今天晚上我就跟身份證提取周歲的操作較了半天勁兒,碰到了各種疑難雜症,最終經過我的探索,得到了一些收獲,在此總結如下,供大家參考。
一,身份證号不能用于公式計算,提取信息,如何處理?
首先發現從其他表格中拷貝過來的身份證号出了問題,怎麼辦?
在此過程中我遇到的第1個問題就是身份證号碼表面上看起來是文本,但是輸入公式後就是不能計算,這說明從其他表格身份證那一列拷貝過來的的身份證号碼本身就有問題,不是合格的,可以供excel公式計算引用的數據。經過使用某工具檢驗,發現這些身份證号果然都是不合格的數據。
這可怎麼辦?怎樣把這些不合規的身份證号轉換成合規的身份證号呢?想起了我的老辦法,就是先找個中介過渡一下,把它們處理成合規的數據。具體來說就是新建一篇word文檔,在word文檔中看看這些身份證号有什麼格式上的問題,然後在word中利用批量查找替換的方法,去掉他們不合規的格式,把這些身份證号處理成為純粹的,合規的數據。說幹就幹。
1,首先新建一篇空白的word文檔,把身份證号從原始Excel表格中複制過來,以“僅粘貼文本”的方式粘貼過來。
果然就看到了問題,就是這些身份證号在格式上有貓膩兒,前後都多了許多符号。
2,使用word文檔查找替換功能,格式上的符号也能查找替換,把身份證号前後的符号全部去掉。
3,接下來該做什麼呢?
就是把處理好的身份證号碼的文本轉變成一列表格,以便于複制粘貼到 Excel表格中去。
具體操作看這裡:
我們終于建立了隻有一列的表格,把這列數據全部選中,把這一列身份證号碼數據“複制”“粘貼”到excel表格裡去,就是可以用于公式計算的合規的數據了。
由于身份證數字比較多,在往Excel單元格粘貼的時候,記得提前先把那一列設置成為純文本格式。粘貼過去的身份證号碼才沒有問題。而且在Excel單元格裡粘貼數據的時候像這樣粘貼。
不是
二,得使用比較靠譜的身份證提取周歲計算公式,網上羅列的個别簡單的公式都是有瑕疵的,結果不準确。比如這個:
在要計算年齡的單元格内輸入YEAR(TODAY())-MID(F2,7,4),
問題在于:這個公式從身份證号碼中提取出來的隻有年份的4位數,這種計算方法是不準确的,得到的結果隻能是個概數。
因為根據身份證号碼包含的出生日期判斷周歲,必須精确到出生的年月日那一天,不到那一天要減1,過了那一天(包含那一天)才是拿今年的數值減去身份證出生年的數值。
所以上面那個公式不可以用。
來自網絡經過驗證準确的三個公式,保存在此,供分享和我自己學習,在此感謝這些前輩。
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")
看到這個公式中包含了對身份證号碼長度的判斷,适用于包含着15位号碼的身份證号碼的計算,不過這種應用場景應該很少了。
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))
這是一位高人用一己之力構造的判斷公式,包含着邏輯判斷,沒有過生日那一天,年份減1,過了生日那一天,不用減1.
3,最簡單的公式來了,就用這兩個中的一個吧。
前提是Excel版本支持。
=DATEDIF(TEXT(MID(F2,7,8),"0-00-00"),NOW(),"y")
或者=DATEDIF(TEXT(MID(B2,7,8),"0-00-00"),TODAY(),"y")
學習探索的過程很累,但是值得。
歇會兒。[啤酒]
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!