Office中国论坛/Access中国论坛
标题:
求助一个算法
[打印本页]
作者:
cyfantasy
时间:
2005-5-14 17:38
标题:
求助一个算法
假如某人身份证为350306750324653或者35030619750324653时
那么能否设置公式
计算出男或者女的退休日
条件:男的在满60岁的下一个月的1日退休;女的在满55岁的下一个月的1日退休.
作者:
dengyf
时间:
2005-5-14 21:43
使用MID 函数就可以了。
作者:
dengyf
时间:
2005-5-14 22:01
呵呵,没这么简单,尽然要用那么多IF。
作者:
红池坝
时间:
2005-5-14 23:14
还必须用if,而且还得多重嵌套
首先是用len()自动判断号码长度,因为15位和18位信息位置不一样
然后是用mid()+mod()判断男女,如果是15位也可以用right()判断,因为15位中性别是最后一位
再才是用mid()+date()等取得出生日期
最后用加法求得退休日期:年加60(女55)月加1(注意进位),也可以直接加721个月(女加661)
作者:
红池坝
时间:
2005-5-14 23:50
我先写一个15位的公式:
=if(mod(right(a2,1),2)=1,if(mid(a2,9,2)="12",date(VALUE("19"&MID(A2,7,2))+61,1,VALUE(MID(A2,11,2))),date(VALUE("19"&MID(A2,7,2))+60,VALUE(MID(A2,9,2))+1,VALUE(MID(A2,11,2)))),if(mid(a2,9,2)="12",date(VALUE("19"&MID(A2,7,2))+56,1,VALUE(MID(A2,11,2))),date(VALUE("19"&MID(A2,7,2))+55,VALUE(MID(A2,9,2))+1,VALUE(MID(A2,11,2)))))
18位的可以参照
然后在外面用IF():
if(len(a2)=15,15位的公式,18位的公式)
作者:
cyfantasy
时间:
2005-5-15 06:36
可是还有个问题.如果是12月的话是不是要进到下一年的1月份.应该不会变成13月吧?
作者:
dengyf
时间:
2005-5-16 17:44
感觉还是用VBA编一个还要来的简单一点。
作者:
红池坝
时间:
2005-5-17 00:52
呵呵,你没有仔细看我的公式吧,其中已经处理了12月的:看看下面的内容就明白了:
if(mid(a2,9,2)="12",date(VALUE("19"&MID(A2,7,2))+56,1,VALUE(MID(A2,11,2)))……(这个是女的,男的前面也有这个内容的)
你得把我的公式在具体的环境里去试试啊,主要是换男女、换出生日期,看看得出的结果对不对再说嘛
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3