• 惊艳的身份证性别

    我们都知道身份证号无论是15位旧版的,还是18位新版的,都有一位性别码。旧版第15位,新版第17位,偶数值为女,奇数值为男。因此,在EXCEL表格中,当我们已知身份证号,要判定其性别时,最普通的想法就是:首先用len()函数判定位数,其次用if()和mid()组合,15位时,取第15位数,18位时取第17位数,再次用mod()判定奇偶数,最后还用if()判定偶数为女,奇数为男。

    公式:IF(MOD(IF(LEN(A2)=15,MID(A2,15,1),MID(A2,17,1)),2)=0,"女","男")。这样虽然也能解决问题,但是难看、难读,又长又臭,实在难以令人佩服!下面,隆重推介我在EXCELHOME论坛看到的,超级版主云南大理的wshcw先生的解决方案,这个公式一样不能用佩服来形容,因为这两个字不足以形容我初见时的心情,我想只能借用“惊艳”二字吧!

    TEXT(-1^MID(A1,15,3),"女;男")

    如此佳妙,不品评一番,问山实在心痒难耐!

    一、谢庭芝兰

    前面那个普通公式,要用IF()、LEN()、MID()三个函数组合费尽九牛二虎之力才能取出身份证号的性别码。而她只需一个MID(A1,15,3) 就艳光四射,一以敌三。

    这里暗藏两大玄机:一是用MID(A1,15,3)从身份证号的第15位起,共提取15、16、17三位数,若身份证号为15位,由于16、17位为空,所以MID()函数只取出第15位性别码;若身份证号为18位数,则取三位数,其个位是性别码。

    二是从数学原理可知,一个数字的个位数的奇偶性决定着这个数的奇偶性。从本例来看无论是18位身份证号还是15位的,用MID(A1,15,3)取数后,其个位都是性别码。说出来简单,我们常说要开动脑筋,但以问山之愚就算开它个7200里也转不到这个道道上来。

    二、孟氏芳邻

    取出性别码后,由于代表偶或奇数的数码都不唯一,偶数有可能是2、4、6……奇数有可能是1、3、5……还必须梳理一下,最好以唯一的数码表示奇数或偶数。说到这里,问山之流,能想到的就只有MOD(性别码,2)了。以性别码除2取余数,余数为1是奇数,余数为0是偶数。

    当然,这样也未尝不可,只是让谢庭芝兰长在这么个庸俗的小环境中,是不是有点于心不忍?择邻而处,于是引出指数概念。-1的偶数次方为1,奇数次方为-1。-1^MID(A1,15,3)的运算结果为1则女性,为-1则男性。

    三、杨女长成

    不能打破常规的人总会这么想,到了这一步总该用到我们最常见的IF()函数了吧,这难道不是理所当然,水到渠成的事吗?IF(-1^MID(A1,15,3)=-1,”男”,”女”)。唉!美人情怀又岂是你我凡夫俗子所能揣测的?!最后,人家是巧妙运用TEXT()函数的正负数显示规则,拒绝平庸,成就高贵!http://club.excelhome.net/thre...
    七楼
    2014/7/17 10:29:11
举报不良信息

 

 大  小