Excel中最精確的計算年齡的公式

2022-04-28 22:30:33 字數 1829 閱讀 5920

假設a1是身份證號所在單元格

=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、計算出生日期到某一指定日期(一般選用某年的最後一天入2023年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天所以這種演算法也不是很精確。

通過認真分析,我覺得只有結合我們計算年齡的實際方法,才能編制出準確無誤的公式。首先分析人們計算年齡的方法,例如,筆者系2023年3月20日生人,如果要在2023年3月23日這天計算他的年齡,通常採用這樣的方法。首先,人們會用2007減去1983得出的年齡為24歲,然後再看看他「滿沒滿」24歲,就是看看出生的月份和日期比今天早還是晚,如果出生日期晚於今天則表示沒有滿,那麼他的年齡就應該是2007-1983-1=23歲。如果出生日期早於今天或者就是今天,就說明他已經滿了24歲或者正好滿24歲,則他的年齡就是2007-1983=24歲。分析清楚了計算年齡的過程我們再根據這個過程編寫公式就很容易了。

綜上,我編寫了如下公式,在實際應用中將公式中所有的c12替換為,你的所使用的出生日期所在的**行號列號組合即可。如(a1,b2等等)

=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) , 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)))

SQL 根據日期精確計算年齡

第一種 一張人員資訊表裡有一人生日 birthday 列,跟據這個列,算出該人員的年齡 datediff year,birthday,getdate 例 birthday 2003 3 8 getdate 2008 7 7 結果為 5 這樣結果是會返回該人員的大概年齡,但不精確.不會精確到月或日.按...

SQL 根據日期精確計算年齡

第一種 一張人員資訊表裡有一人生日 birthday 列,跟據這個列,算出該人員的年齡 datediff year,birthday,getdate 例 birthday 2003 3 8 getdate 2008 7 7 結果為 5 這樣結果是會返回該人員的大概年齡,但不精確.不會精確到月或日.按...

oracle 根據出生日期計算精確年齡

select floor months between sysdate,to date 20141217 yyyy mm dd 12 a,手工輸入日期 months between sysdate,u.modifydate 12 b,從資料庫取值計算月份 floor months between s...