Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5141|回复: 11

[已解决]请老师给我编一个在b列算出岁数的vba。以2011年8月31止。学习查找了好长时间,没法解

[复制链接]
发表于 2011-12-23 08:00 | 显示全部楼层 |阅读模式
9学分
请老师给我编一个在b列算出岁数的vba。以2011年8月31止。学习查找了好长时间,没法解决。a列数所过万,用datedif函数excel运行太慢。请教第一个问题,很期待!
a列                                           b列
1964-9-1
1967-1-1
1989-1-1
1991-5-1
1941-1-1
1966-2-1
1965-6-1
1988-11-1
……
 


最佳答案
2011-12-23 08:00
nl.rar (7.98 KB, 下载次数: 23)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-12-23 08:00 | 显示全部楼层    本楼为最佳答案   
nl.rar (7.98 KB, 下载次数: 23)
回复

使用道具 举报

发表于 2011-12-23 09:02 | 显示全部楼层
本帖最后由 macky591 于 2011-12-23 09:06 编辑

VBA年龄.rar (7.38 KB, 下载次数: 23)
回复

使用道具 举报

发表于 2011-12-23 09:41 | 显示全部楼层
Sub aa()
Dim arr, i As Long, dt As Date
dt = Date
arr = Range("A3:B" & Range("A65536").End(xlUp).Row)
For i = 1 To UBound(arr)
arr(i, 2) = VBA.DateDiff("yyyy", arr(i, 1), dt)
Next i
Range("B3").Resize(UBound(arr), 1) = Application.Index(arr, , 2)
End Sub
回复

使用道具 举报

发表于 2011-12-23 09:51 | 显示全部楼层
这个也许是你想要的

计算年龄.rar

199.69 KB, 下载次数: 7

回复

使用道具 举报

发表于 2011-12-23 09:54 | 显示全部楼层
这个也要用VBA,小题大作。
回复

使用道具 举报

发表于 2011-12-23 10:08 | 显示全部楼层
=int((40786-(A2))/365),几万行也用不了一两秒。
回复

使用道具 举报

 楼主| 发表于 2011-12-23 14:59 | 显示全部楼层
谢谢各位老师,每一次提问就得到这么多帮助!
回复

使用道具 举报

 楼主| 发表于 2011-12-23 22:32 | 显示全部楼层
经过老师们指导,我加了修改,得到满意结果:
1恒星年等于365.25636日
1回归年 = 365.24219879日
Sub 算岁数vba()
Dim i&
    For i = 1 To Sheet1.[a65536].End(xlUp).Row
        Cells(i, 2) = Int((40786 - Cells(i, 1)) / 365.24219879)
    Next
End Sub
回复

使用道具 举报

发表于 2011-12-24 21:37 | 显示全部楼层
还有一个简单的
用分列功能提出年(格式选文本)
在插入一列单元格内容为2011
2边做减法

虽然是笨办法但是也能实现
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-4 03:34 , Processed in 0.408307 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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