回覆列表
  • 1 # 餘生皆假期

    先放出一波“拿來主義”的公式,複製即用,注意實際單元格位置:

    (假設身份證在A3單元格)

    出生日期:=DATE(MID(A3,7,4),MID(A3,11,2),MID(A3,13,2))

    年齡:=YEAR(NOW())-MID(A3,7,4)

    出生月、日(計算星座的輔助列,B3是出生日期的位置):=TEXT(B3,"M-D")

    星座(D3是輔助列出生月、日的位置):=IF(AND(D3>="3-21",D3<="4-19"),"白羊座",IF(AND(D3>="4-20",D3<="5-20"),"Taurus",IF(AND(D3>="5-21",D3<="6-21"),"雙子座",IF(AND(D3>="6-22",D3<="7-22"),"巨蟹座",IF(AND(D3>="7-23",D3<="8-22"),"獅子座",IF(AND(D3>="8-23",D3<="9-22"),"處女座",IF(AND(D3>="9-23",D3<="10-23"),"天秤座",IF(AND(D3>="10-24",D3<="11-22"),"天蠍座",IF(AND(D3>"11-23",D3<="12-21"),"射手座",IF(AND(D3>="12-22",D3<="1-19"),"摩羯座",IF(AND(D3>="1-20",D3<="2-18"),"水瓶座",IF(AND(D3>="2-19",D3<="3-20"),"雙魚座"))))))))))))

    屬相:=MID("猴雞狗豬鼠牛虎兔龍蛇馬羊",MOD(YEAR(B3),12)+1,1)

    性別=IF(MOD(MID(A3,17,1),2)=1,"男","女")

    然後我們再詳細的說一下,為什麼公式這麼寫:

    首先,我們需要知道身份證所包含的資訊有什麼,並如何表現的,

    身份證含義:前6位指:2位省\2位市\2位縣區的程式碼(首次辦理身份證所在地),第2個6位:生年月日最後3位:序號,表示辦理身份證的第幾名,其中性別在倒數第二位表示,奇數是男性,偶數是女性. 18位身份證最後一位數為0-10,但是0-9都是直接用數字表示的,10這個數字是用的X來表示。

    好,透過以上資訊,我們知道,可以從身份證號中知道的內容有:

    其中,省、市、區由於源資料量太大,我們通常不用excel判斷,而一般推斷的是生日、性別;而透過生日又可以知道年齡、屬相、星座等資訊(適用於花名冊的製作)。

    下面透過示例來講解,假設我們有一個身份證號碼,我們可以透過它知道如圖資訊,

    (是我瞎編的,如有雷同、非常抱歉!)

    而顯示公式如下,

    圖有點小哈!我們來分別看一下!

    出生日期

    公式如下

    =DATE(MID(A3,7,4),MID(A3,11,2),MID(A3,13,2))

    已知A3即是我們的身份證號碼單元格,而MID的函式釋義如下,

    所以MID(A3,7,4)的意思就是——從身份證號碼的第七位開始取4個數字,即2000;

    這樣後面的也好理解了MID(A3,11,2)是提取月份,MID(A3,13,2)是提取日期數字,而最外層巢狀的DATE則是把提取的三個數字變成日期的格式。

    性別

    類似的我們先來看性別的求法,公式如下,

    =IF(MOD(MID(A3,17,1),2)=1,"男","女")

    我們逐層來看,最裡層為MID(A3,17,1),同樣的,返回身份證號碼的倒數第二位(這個值如果為偶數則是女性,奇數為男性)。

    所以下一步我們要判斷的為該數字的奇偶,就用到了mod函式,該函式的釋意如下,

    即第一個引數為被除數,第二個為除數,最終返回餘數。

    所以MOD(MID(A3,17,1),2),用身份證的倒數第二位去除以2,餘數只有兩種情況,即1(奇數)或者0(偶數)。

    最後就用到了條件函式IF(MOD(MID(A3,17,1),2)=1,"男","女"),如果餘數為1,則是男性,餘數為0即為女性。

    年齡

    年齡公式如下,

    =YEAR(NOW())-MID(A3,7,4)

    上面我們已經知道了,MID(A3,7,4)的意思是返回身份證從第七位開始的4位數,即為年份,而YEAR(NOW())則返回系統日期的當前的年份,相減則為年齡。

    用YEAR(NOW())的好處是,你明年開啟這個表的時候,相應的年齡會自動變化。

    星座、屬相

    公式如下,

    屬相=MID("猴雞狗豬鼠牛虎兔龍蛇馬羊",MOD(YEAR(B3),12)+1,1)

    星座=IF(AND(D3>="3-21",D3<="4-19"),"白羊座",IF(AND(D3>="4-20",D3<="5-20"),"Taurus",IF(AND(D3>="5-21",D3<="6-21"),"雙子座",IF(AND(D3>="6-22",D3<="7-22"),"巨蟹座",IF(AND(D3>="7-23",D3<="8-22"),"獅子座",IF(AND(D3>="8-23",D3<="9-22"),"處女座",IF(AND(D3>="9-23",D3<="10-23"),"天秤座",IF(AND(D3>="10-24",D3<="11-22"),"天蠍座",IF(AND(D3>"11-23",D3<="12-21"),"射手座",IF(AND(D3>="12-22",D3<="1-19"),"摩羯座",IF(AND(D3>="1-20",D3<="2-18"),"水瓶座",IF(AND(D3>="2-19",D3<="3-20"),"雙魚座"))))))))))))

    其中細心的朋友可以看到,在計算星座的時候,我設了一列輔助列,把出生日期返回成了月日=TEXT(B3,"M-D"),(因為星座是不用考慮年份的)。

    星座和屬相的計算方法,我以前寫過專門的文章,這裡不做詳解,感興趣的請走傳送門:

    「excel有樂趣」依據生日計算生肖(公式與思維) https://www.toutiao.com/i6489358644470088206/

    「excel有樂趣」依據生日計算星座(If公式的鞏固使用) https://www.toutiao.com/i6489788858920600078/

  • 中秋節和大豐收的關聯?
  • 泡貨和重貨該如何界定?