根據現行的居民身份證號碼編碼規定,正在使用的18位的身份證編碼。它的第17位為性別(奇數為男,偶數為女),第18位為效驗位。而早期使用的是15位的身份證編碼,它的第15位是性別(奇數為男,偶數為女)。
(1)函數分解
LEN函數返回文本字符串中的字符數。
語法:LEN(text)
Text是要查找其長度的文本。空格將作為字符進行計數。
MOD函數返回兩數相除的余數。結果的正負號與除數相同。
語法:MOD(number,divisor)
Number為被除數;Divisor為除數。
MID函數返回文本字符串中從指定位置開始的特定數目的字符,該數目由用戶指定。
語法:MID(text,start_num,num_chars)
Text為包含要提取字符的文本字符串;Start_num為文本中要提取的第一個字符的位置。文本中第一個字符的start_num為1,以此類推;Num_chars指定希望MID從文本中返回字符的個數。
(2)實例分析
為了適應上述情況,必須設計一個能夠適應兩種身份編碼的性別計算公式,如果在C2輸入身份證號碼,在D2單元格中輸入“=IF(LEN(C2)=15,IF(MOD(MID(C2,15,1),2)=1,"男","女"),IF(MOD(MID(C2,17,1),2)=1,"男","女"))”。回車后即可在單元格獲得該職工的性別,而后只要把公式復制到D3、D4等單元格,即可得到其他職工的性別。
為了便于大家了解上述公式的設計思路,下面簡單介紹一下它的工作原理:該公式由三個IF函數構成,其中“IF(MOD(MID(C2,15,1),2)=1,"男","女")”和“IF(MOD(MID(C2,17,1),2)=1,"男","女")”作為第一個函數的參數。公式中“LEN(C2)=15”是一個邏輯判斷語句,LEN函數提取C2等單元格中的字符長度,如果該字符的長度等于15,則執行參數中的第一個IF函數,否則就執行第二個IF函數。
在參數“IF(MOD(MID(C2,15,1),2)=1,"男","女")”中。MID函數從C2的指定位置(第15位)提取1個字符,而MOD函數將該字符與2相除,獲取兩者的余數。如果兩者能夠除盡,說明提取出來的字符是0(否則就是1)。邏輯條件“MOD(MID(C2,15,1),2)=1”不成立,這時就會在D2單元格中填入“女”,反之則會填入“男”。
如果LEN函數提取的C2等單元格中的字符長度不等于15,則會執行第2個IF函數。除了MID函數從C2的指定位置(第17位,即倒數第2位)提取1個字符以外,其他運算過程與上面的介紹相同。