在excel中计算平均年龄

我有一个包含700余人信息的excel表格,出生年月是以xxxx.xx的形式表示的,如1982年1月,输入的是1982.01,在数字格式下,最后的0会被自动舍掉,如1982.10会变为1982.1,所以把这样的设成了文本格式,可以正常显示为1982.10(全部为出生年月,只到月,没有日期)。
现在领导提出要自动计算平均年龄,求详细解决过程。

我的办法是:新增C列和D列,C列是计算岁数,假设出生年月的字符串放在B3单位格中,刚C3中用公式“IF(MONTH(TODAY())<MID(B3,6,2),YEAR(TODAY())-MID(B3,1,4)-1,YEAR(TODAY())-MID(B3,1,4))” 实现,分别计算出各人岁数。D列是计算月数,D3列的公式是:IF(MONTH(TODAY())<MID(B3,6,2),12+MONTH(TODAY())-MID(B3,6,2),MONTH(TODAY())-MID(B3,6,2))。

    对于岁数结果栏c8,使用的公式是“INT(AVERAGE(C3:C7))+INT(((AVERAGE(C3:C7)-INT(AVERAGE(C3:C7)))*12+AVERAGE(D3:D7))/12)”,月数结果栏d8使用的公式是"INT(MOD((AVERAGE(C3:C7)-INT(AVERAGE(C3:C7)))*12+INT(AVERAGE(D3:D7)),12))"

    由于时间仓促,没有对公式进行优化和寻找更简洁的办法。这点,还望大鸟指导。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-30
假设数据在A列,另一单元格输入
=AVERAGE(DATEDIF(SUBSTITUTE(A1:A100,".","-")&"-1",TODAY(),"y") )
数组公式,输入后先不要回车,按Ctrl+Shift+Enter结束计算。
“A1:A100”为你的出生年月区域,头尾中间不能有空单元格!
第2个回答  2012-01-30
选中列,
查找:.
替换为:-
然后再计算年龄。

如果日期是输入“'”的文本,如:'1982.10
那么替换“.”后,复制空白单元格,选中日期区域,右击,选择性粘粘,选“加”。
设置单元格格式为:yyyy-mm
第3个回答  2012-01-30
假设出生年月在B列,最后列的后面如X列输入年龄,年龄第2行的公式:
=DATEDIF(SUBSTITUTE(B2,".","-")&"-1",TODAY(),"y")
如果出生年月不在B列,修改公式中的B2为出生年月所在列,向下复制公式。
最后求平均年龄,=AVERAGE(X:X)
第4个回答  2012-01-30
最笨的办法,插入辅助列计算,如下:
姓名 出生年月 当前年月 年 月
张三 1992.10 2011.01 18 3
李四 1985.11 2011.01 25 2
王五 1982.09 2011.01 28 4
赵六 1978.09 2011.01 32 4

平均年龄 26岁 0.25 个月 =26.021岁
公式如下:
姓名 出生年月 当前年月 年 月
张三 1992.10 2011.01 =VALUE(IF(RIGHT(C2,2)-RIGHT(B2,2)<0,LEFT(C2,4)-LEFT(B2,4)-1,LEFT(C2,4)-LEFT(B2,4))) =IF(RIGHT(C2,2)-RIGHT(B2,2)<0,RIGHT(C2,2)-RIGHT(B2,2)+12,RIGHT(C2,2)-RIGHT(B2,2))
李四 1985.11 2011.01 25 2
王五 1982.09 2011.01 28 4
赵六 1978.09 2011.01 32 4

平均年龄 年 =(SUM(D2:D7)+INT(SUM(E2:E7)/12))/COUNTA(D2:D7)
月=MOD(SUM(E2:E7),12)/COUNTA(D2:D7)
相似回答