Office中国论坛/Access中国论坛

标题: 从身份证中取生日(18.15位) [打印本页]

作者: wcjooo    时间: 2008-9-18 10:43
标题: 从身份证中取生日(18.15位)
=IF(LEN(H3)=15,CONCATENATE("19",MID(H3,7,2),MID(H3,9,2),MID(H3,11,2)),CONCATENATE(MID(H3,7,4),MID(H3,11,2),MID(H3,13,2)))
作者: pureshadow    时间: 2008-9-18 11:31
=--TEXT((MID(C4,7,6+(LEN(C4)=18)*2)),"#-00-00")
=--text(mid(c4,7,len(c4)/2-1),"#-00-00")

[ 本帖最后由 pureshadow 于 2008-9-27 15:03 编辑 ]
作者: za_moto    时间: 2008-9-26 23:33
能解答一下吗?
作者: pureshadow    时间: 2008-9-27 15:06
标题: 身份证号里的数字/字符游戏
身份证号                位数   出生日期    性别
123456197706054321     18          MID(,7,8)       MID(,17,1)
123456571005433             15          MID(,7,6)       MID(,15,1)

出生日期:
  我们需要这样一个公式:18=8 15=6
方法一:IF判断
  IF(LEN()=18,8,6)
方法二:将TRUE/FALSE的结果参与到计算中
  (LEN()=18)*2+6
方法三:数字游戏
  LEN()/2-1:18位结果为8,15位结果为6.5
这一结果与我们需要的18=8 15=6貌似有差点,但在很多函数中(MID是其中之一),小数会自动被INT。
  同理,如果我们只需要“年”,就可以用:MID(,LEN()/2,2)。
  同理,如果我们只需要“月-日”,就可以用:MID(,LEN()/2+2,4)。

性别:
我们需要这样一个公式:18=17 15=15
方法一:IF判断
  IF(LEN()=18,17,15)
方法二:将TRUE/FALSE的结果参与到计算中
  (LEN()=18)*2+15
方法三:字符游戏
  RIGHT(LEFT(,17))
    MID(,15,3)
这个函数不用详细解释都能看懂,它的精彩之处在于思路,尤其是第二种,算寄偶数又没有规定在几位数内……





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3