身份证算年龄

假设A1是身份证号所在单元格

=IF(MONTH(NOW())<INT(MID(A1,11,2)),INT(YEAR(NOW())-INT(MID(A1,7,4)))-1,IF(MONTH(NOW())>INT(MID(A1,11,2)),YEAR(NOW())-INT(MID(A1,7,4)),IF(DAY(NOW())>=INT(MID(A1,13,2)),YEAR(NOW())-INT(MID(A1,7,4)),YEAR(NOW())-INT(MID(A1,7,4))-1)))

Excel中最精确的计算年龄的公式

1、计算出生日期到某一指定日期(一般选用某年的最后一天入2006年12月31日)的的天数,然后除以360 ,得到一个数值,然后用 int()函数取整,得出需要的年龄。一般使用的公式如下:

=IF(C12="","",INT(DAYS360(C12,"2006-12-31")/360))

=IF(C12="","",INT(DAYS360(C12,TODAY())/360))

这个方法,这个公式的弊端在于,一、将每个月默认为30天去计算两个日期之间的天数,二、将每年默认为360天去计算年龄。这种方法显然不精确。

2、年份直接相减

计算周岁

=YEAR(NOW())-YEAR(C12)

=(TODAY()-出生日期单元格)/365(常用)

计算虚岁

=YEAR(NOW())-YEAR(C12)+1

这种算法的精确程度显而易见,粗略估算还算可以。

3、使用DATEDIF函数

这种方法与第一种方法采用了相同的思路,但是其的精确程度显然比第一种方法要高,这取决于DATEDIF函数本身的精确性。

=IF(C12="","",INT(DATEDIF(C12,"1983-3-20","D")/365))

或者,

=IF(C12="","",INT(DATEDIF(C12,now(),"D")/365))

但是这种方法强行将一年固定为365天,我们知道通常情况每个四年就有一年是366天所以这种算法也不是很精确。

通过认真分析,我觉得只有结合我们计算年龄的实际方法,才能编制出准确无误的公式。首先分析人们计算年龄的方法,例如,笔者系1983年3月20日生人,如果要在2007年3月23日这天计算他的年龄,通常采用这样的方法。首先,人们会用2007减去1983得出的年龄为24岁,然后再看看他“满没满”24岁,就是看看出生的月份和日期比今天早还是晚,如果出生日期晚于今天则表示没有满,那么他的年龄就应该是2007-1983-1=23岁。如果出生日期早于今天或者就是今天,就说明他已经满了24岁或者正好满24岁,则他的年龄就是2007-1983=24岁。分析清楚了计算年龄的过程我们再根据这个过程编写公式就很容易了。

综上,我编写了如下公式,在实际应用中将公式中所有的C12替换为,你的所使用的出生日期所在的表格行号列号组合即可。如(A1,B2等等)

=IF(MONTH(NOW())<MONTH(C12),INT(YEAR(NOW())-YEAR(C12))-1,IF(MONTH(NOW())>MONTH(C12),YEAR(NOW())-YEAR(C12),IF(DAY(NOW())>=DAY(C12),YEAR(NOW())-YEAR(C12),YEAR(NOW())-YEAR(C12)-1)))

公式说明

=IF ( MONTH(NOW())<MONTH(C12) , INT(YEAR(NOW())-YEAR(C12))-1 ,

//如果当前日期的月份小于所需计算日期的月份,则表示今年没有过生日,年龄数为YEAR(NOW())-YEAR(C12)-1,如果不是这种情况,进入下面的判断

IF ( MONTH (NOW())>MONTH(C12) , YEAR(NOW())-YEAR(C12) ,

//如果当前日期的月份大于所需计算日期的月份,则表示今年已经过生日,年龄数为YEAR(NOW())-YEAR(C12),如果也不是这种情况,则表示这两个月份相等,进入下面的判断过程去判断,日期的情况。

IF ( DAY(NOW())>=DAY(C12) , YEAR(NOW())-YEAR(C12) ,

//如果今天的日期大于或者等于出生年月日中的日期,则表示已经过了生日,或者正在过生日,则年龄数为YEAR(NOW())-YEAR(C12),否则表示今年没有过生日,年龄数应该选择下面的公式,大小为YEAR(NOW())-YEAR(C12)-1)))

Excel中最精确的计算年龄的公式的更多相关文章

  1. mysql 中通过身份证号码计算年龄

    SELECT DATE_FORMAT(NOW(), '%Y') - SUBSTRING( '换成对应身份证',7,4) AS age

  2. 在Excel中根据某一个单元格的出生日期自动精确计算年龄

    =IF(MONTH(NOW())<MONTH(G4),INT(YEAR(NOW())-YEAR(G4))-1,IF(MONTH(NOW())>MONTH(G4),YEAR(NOW())-Y ...

  3. Java 添加、读取、删除Excel中的图表趋势线

    本文以Java示例介绍如何在Excel中添加趋势线,以及读取趋势线公式.通过文中的方法可支持添加6种不同类型的趋势线,包括Linear.Exponential.Logarithmic.Moving A ...

  4. 在Excel中,已知身份证号码,如何批量计算其实际年龄?

    昨天,上司问我:..,你会在Excel中计算年龄吗?当时,一下促住了.说真的,还真不会.今天研究了一下,写下来,方便日后查看. 首先,得有一张已知姓名和相应身份证号的原表吧. 在这张表上再加上三列:出 ...

  5. [转]在Excel中使用SQL语句实现精确查询

    本文转自:http://blog.sina.com.cn/s/blog_5fc375650102e1g5.html 今天在微博上看到@数据分析精选 分享的一篇文章,是关于<在Excel中使用SQ ...

  6. Java 根据年月日精确计算年龄

    import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * Created b ...

  7. 用VBA计算WPS 表格ET EXCEL中的行数和列数的多重方法

    用VBA计算WPS 表格ET EXCEL中的行数和列数 每种方法中上面的是Excel的行数,下面的是Excel的列数. 方法1: ActiveSheet.UsedRange.Rows.Count Ac ...

  8. excel导出的时候从程序后台写到excel里的是文本,所以无法在excel中计算怎么办?

    文章引用自:http://www.cnblogs.com/rayray/p/3414452.html excel导出的时候从程序后台写到excel里的是文本,所以无法在excel中计算怎么办? 需要导 ...

  9. SQL 根据日期精确计算年龄

    SQL 根据日期精确计算年龄 第一种: 一张人员信息表里有一人生日(Birthday)列,跟据这个列,算出该人员的年龄 datediff(year,birthday,getdate()) 例:birt ...

随机推荐

  1. 从零开始学安全(四十五)●browser_autopwn2漏洞利用配合Ettercap工具实施DNS欺骗攻击

    系统:kali 2019  工具Ettercap,Metasploit 环境内网地址 首先 cd /etc/ettercap/ 移动在ettercap 文件下 在用vim 打开编辑 etter.dns ...

  2. Python实例----------每日一贴

    def function_tips(): '''功能:每天输出一条励志文字 ''' import datetime # 导入日期时间类 # 定义一个列表 mot = ["今天星期一:\n人生 ...

  3. 海康&大华&DSS视频拉流-RTSP转RTMP多媒体播放技术

    海康&大华&DSS获取RTSP 实时流 海康:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/ ...

  4. layui 轮播图动态数据不显示问题

    layui.use('carousel', function() { var carousel = layui.carousel; var ins = carousel.render({ elem: ...

  5. 一起学Android之ToggleButton和Switch

    本文以一个简单的小例子,简述在Android开发中ToggleButton(开关按钮)和Switch(开关)的简单使用,仅供学习分享使用. 概述 ToggleButton是一个有两种状态(checke ...

  6. MyBatis学习---逆向工程 Mybatis Generator代码生成

    [目录]

  7. lambda 怎么传递ref参数

    lambda 传递ref参数有个语法bug,必须要显式书写参数类型. //如 delegate bool FuncType(ref int num); FuncType func1; func1 = ...

  8. 团队项目(六)- Alpha阶段项目复审(江山代有才人秃)

    排名仅代表个人观点: 小组名字 优点 缺点&Bug报告 排名 中午吃啥队 从测试链接来看,作为一个订餐的APP,有着跟现在的订餐APP相似的功能,很完整,是一个踏踏实实做出来的项目 向购物车中 ...

  9. Git源代码管理

    一. 分支管理 使用 git 进行源代码管理,一般将某个项目的所有分支分为以下几条主线 1. Master 顾名思义,既然名字叫 Master ,那么该分支就是主分支的意思. master 分支永远是 ...

  10. Delphi 拦截输入法输入结果

    { 拦截输入法输入的字符串.向编辑框中输入中文查看效果. Delphi XE7 } unit Unit1; interface uses Winapi.Windows, Winapi.Messages ...