设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1716|回复: 7
打印 上一主题 下一主题

[基础应用] 求助一个算法

[复制链接]
跳转到指定楼层
1#
发表于 2005-5-14 17:38:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
假如某人身份证为350306750324653或者35030619750324653时

那么能否设置公式

计算出男或者女的退休日

条件:男的在满60岁的下一个月的1日退休;女的在满55岁的下一个月的1日退休.

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2005-5-14 21:43:00 | 只看该作者
使用MID 函数就可以了。
3#
发表于 2005-5-14 22:01:00 | 只看该作者
呵呵,没这么简单,尽然要用那么多IF。
4#
发表于 2005-5-14 23:14:00 | 只看该作者
还必须用if,而且还得多重嵌套

首先是用len()自动判断号码长度,因为15位和18位信息位置不一样

然后是用mid()+mod()判断男女,如果是15位也可以用right()判断,因为15位中性别是最后一位

再才是用mid()+date()等取得出生日期

最后用加法求得退休日期:年加60(女55)月加1(注意进位),也可以直接加721个月(女加661)
5#
发表于 2005-5-14 23:50:00 | 只看该作者
我先写一个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位的公式)

6#
 楼主| 发表于 2005-5-15 06:36:00 | 只看该作者
可是还有个问题.如果是12月的话是不是要进到下一年的1月份.应该不会变成13月吧?
7#
发表于 2005-5-16 17:44:00 | 只看该作者
感觉还是用VBA编一个还要来的简单一点。
8#
发表于 2005-5-17 00:52:00 | 只看该作者
呵呵,你没有仔细看我的公式吧,其中已经处理了12月的:看看下面的内容就明白了:



if(mid(a2,9,2)="12",date(VALUE("19"&MID(A2,7,2))+56,1,VALUE(MID(A2,11,2)))……(这个是女的,男的前面也有这个内容的)

你得把我的公式在具体的环境里去试试啊,主要是换男女、换出生日期,看看得出的结果对不对再说嘛
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-1-7 20:54 , Processed in 0.091364 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表