ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 15129|回复: 51

[已解决] VBA计算年龄的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-11-2 19:43 | 显示全部楼层 |阅读模式
本帖最后由 pingshanggl 于 2013-11-4 21:46 编辑

附件已更改,里面有2003和2007两个版本,能够解决(包括每年的9月1日这个特殊日子)每年中的任何一天出生到今年(你也可以设置明年/后年)的8月31日是多少周岁的问题
如:2012年9月1日出生,按照设定(以2013年08月31日为计算界限),它自动算出年龄是0岁,2012年8月31日出生,算出的年龄是1岁
或许不是最好的,但是比较适合自己







计算年龄.rar

31.55 KB, 下载次数: 285

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-11-2 19:57 | 显示全部楼层
Sub lyj()
    r = [c65536].End(3).Row
    c = UsedRange.Columns.Count
    arr = [a1].Resize(r, c)
    For i = 4 To r
        If arr(i, 3) <> Empty Then
            arr(i, 3) = Format(arr(i, 3), "####-##-##")
            arr(i, 4) = "=datedif(c" & i & ",date(2013,8,31)," & """y""" & ")"
        End If
    Next
    [a1].Resize(r, c) = arr
End Sub

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-11-2 20:59 | 显示全部楼层
lcjy11185 发表于 2013-11-2 19:57
Sub lyj()
    r = [c65536].End(3).Row
    c = UsedRange.Columns.Count

谢谢你的回复
你的VBA出现了问题,多点击几次"出生年月"也会改变.

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-11-2 21:02 | 显示全部楼层
1.jpg

这是刚才VBA运行时发生问题的图片

arr(i, 4) = "=datedif(c" & i & ",date(2013,8,31)," & """y""" & ")"与函数无异

TA的精华主题

TA的得分主题

发表于 2013-11-2 21:22 | 显示全部楼层
本帖最后由 jbjbzjb 于 2013-11-3 09:37 编辑

ghdhfghgfgh

一个表格的单元格格式设计得乱七八糟!!!!

附件更新(指定为某一具体时点统计周岁)

Xl0000000.rar

18.28 KB, 下载次数: 158

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-11-2 22:00 | 显示全部楼层
jbjbzjb 发表于 2013-11-2 21:22
ghdhfghgfgh

一个表格的单元格格式设计得乱七八糟!!!!

谢谢参与
表格的格式是上级规定的,不可以更改


2.jpg
运行之后出现问题(图片也可看到),如下:
姓名           性别         出生年月              周岁
周军23        男          19820511           1900/1/31
周军24        女          19860911           1900/1/27
周军25        女          20100408           1900/1/3
周军26        男          19640611           1900/2/18
周军27        女          19630911           1900/2/19

TA的精华主题

TA的得分主题

发表于 2013-11-2 22:12 | 显示全部楼层
本帖最后由 jbjbzjb 于 2013-11-2 22:20 编辑

笨蛋,前述已经点明单元格格式设计得恶心人了,还“图片也可看到”!!!

结论:自个儿琢磨去!

算了,有人劝俺要淡定,那就再点一下:
1.你所谓的“上级”是个Excel 盲;
2.哪有“周岁”所在列的单元格有的设为日期格式,有的设为“文本”格式!!
3.上述“周岁”列应设为“常规”格式!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-11-2 22:23 | 显示全部楼层
jbjbzjb 发表于 2013-11-2 22:12
笨蛋,前述已经点明单元格格式设计得恶心人了,还“图片也可看到”!!!

结论:自个儿琢磨去!

回复是好事,但骂人就不对了

TA的精华主题

TA的得分主题

发表于 2013-11-2 22:30 | 显示全部楼层
pingshanggl 发表于 2013-11-2 22:23
回复是好事,但骂人就不对了

不是骂人,是恨铁不成钢!一般的点醒句可能起不了作用。

另:Excel 常识多少要具备吧,他人给你点出问题所在了,你还不醒悟,还要说“周岁”列格式是“上级”定的,不可更改。既然不可更改,上级非得用“日期”格式显示周岁,你何以又说结果不对?

究竟是我说得对呢,还是你“上级”对呀!何以如此矛盾?!
不“骂”下,点不醒的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-11-2 22:34 | 显示全部楼层
jbjbzjb 发表于 2013-11-2 22:30
不是骂人,是恨铁不成钢!一般的点醒句可能起不了作用。

另:Excel 常识多少要具备吧,他人给你点出问 ...

别人传给我的表格,我没有注意到有格式问题

类似的表格还有好几张呢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-30 22:16 , Processed in 0.053494 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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