1.Excel中的datedif函数

之前我通过身份证计算年龄时,都是取第7到10位,用当年的年份去减,得到一个年龄,这样不准确。后来,发现了datedif函数,注意,只有一个f。

函数语法:
DATEDIF(start_date,end_date,unit)
参数1:start_date,表示起始日期
参数2:end_date,表示结束日期
参数1和参数2可以是带引号的文本串(例如:"2014-1-1")、系列号或者其他公式或函数的结果
参数3:unit为所需信息的返回时间单位代码。各代码含义如下:
"y"返回时间段中的整年数
"m”返回时间段中的整月数
"d"返回时间段中的天数
"md”参数1和2的天数之差,忽略年和月
"ym“参数1和2的月数之差,忽略年和日
"yd”参数1和2的天数之差,忽略年。按照月、日计算天数

演示如下:在C2单元格里写上如下内容:=DATEDIF(A2,B2,"y")

比如,要根据身份证号求实际年龄,则用下面的方法:

在B2单元格写下如下内容:=DATEDIF(MID(A2,7,4) & "/" & MID(A2,11,2) & "/" & MID(A2,13,2),NOW(),"y")

如果觉得不够详细,就看微软的官方说明。DATEDIF 函数 (microsoft.com)

2.在VBA中使用datediff函数

注意是两个f。而且函数的定义不一样,如下:

语法

DateDiff(interval, date1, date2, [ firstdayofweek, [ firstweekofyear ]] )

DateDiff 函数语法包括这些 命名参数:

Part 说明
interval 必需。 表示用于计算 date1 和 date2 之间差异的时间间隔的 字符串表达式。
date1date2 必需;Variant (Date)。 要在计算中使用的两个日期。
firstdayofweek 可选。 一个指定一周的第一天的常量。 如果未指定,则会假定为星期日。
firstweekofyear 可选。 一个指定一年的第一周的常量。 如果未指定,则会假定 1 月 1 日出现的那一周为第一周。

设置

interval 参数具有以下设置:

Setting 说明
yyyy
q 季度
m
y 每年的某一日
d
w 工作日
ww
h 小时
n 分钟
s

这些是从官方文档上找的,很费解。比如,"yyyy"表示间隔的是多少年,"y"表示某年中的一日,有的文档上又写的是一年中的天。测试如下:

通过立即窗口的第3句我们发现,跨年就算一年,哪怕只有一天。

文档中也明确了这句话。

在将 12 月 31 日与随后一年中的 1 月 1 日相比时,“年”("yyyy") 的 DateDiff 会返回 1,即使仅过去一天时间。

微软的官方文档地址:DateDiff 函数 (Visual Basic for Applications) | Microsoft Docs

3.VBA求足岁的方法

通过上面第2点的说明,在VBA下面直接使用datediff来求足岁,是行不通的了。因此,定义如下的函数,解决这个问题。

Function Age(id As String) As IntegervarBirthDate = Mid(id, 7, 4) & "/" & Mid(id, 11, 2) & "/" & Mid(id, 13, 2)If IsNull(varBirthDate) Then Age = 0: Exit FunctionvarAge = DateDiff("yyyy", varBirthDate, Now)'为了解决跨年就是一岁的问题,判断今年的生日到没了。如果没到,则减1。If Date < DateSerial(Year(Now), Month(varBirthDate), Day(varBirthDate)) ThenvarAge = varAge - 1End IfAge = CInt(varAge)
End Function

使用效果如下:

Excel计算年龄(足岁)问题:Excel中datedif和VBA中的datediff函数介绍相关推荐

  1. 计算机excel奖学金公式,Excel计算年龄及按条件计奖学金问题-excel技巧-电脑技巧收藏家...

    Excel计算年龄及按条件计奖学金问题 打开Excel工作表,建立如下表格所示的表格: A B C D E F G H I J K L M 姓名 性别 生日 年龄 年级 语文 数学 外语 政治 平均 ...

  2. Excel 2010 VBA 入门 053 DateDiff函数

    目录 示例 实现代码 DateDiff函数 DateDiff函数中interval参数"w"和"WW"的区别 VBA的DateDiff函数和工作表函数DateD ...

  3. 再谈用Excel计算年龄

    有的时候,对于客人的信息并不是全知,那么身份证就可能用15位来代替,这个时候怎么计算年龄呢?有一个很简单的公式,可以一次性计算15位或18位身份证的年龄. 首先,需要判断一下,这个身份证是15位还是1 ...

  4. excel计算二元线性回归_使用Excel进行回归分析

    Excel数据分析工具库是个很强大的工具,可以满足基本的统计分析,这里介绍用Excel数据分析工具库中的回归做回归分析. 本文主要介绍: Excel数据分析工具库-回归 线性回归和非线性回归 简单线性 ...

  5. 【Excel VBA】用datediff函数计算两个日期的间隔,实例代码亲测好用

    纲举目张 说明 代码code 使用说明 说明 前一段时间在CSDN上回答了一位朋友的提问,其中就用到了datediff函数.个人认为这个自带的函数功能很强大,但是了解的人很少,我在最开始写一写功能的时 ...

  6. Excel计算年龄(工龄)方法一则

    刚才在Excel小组有人问Excel问如何计算年龄(工龄)的问题,其实方法特别多,这里就说一个方法使用Yearfrac和int函数来计算. 语法 YEARFRAC(start_date,end_dat ...

  7. excel计算二元线性回归_用Excel做回归分析

    Excel数据分析工具库是个很强大的工具,可以满足基本的统计分析,这里介绍用Excel数据分析工具库中的回归做回归分析. 本节知识点: Excel数据分析工具库-回归 线性回归和非线性回归 简单线性回 ...

  8. php中mb_str_split分割字符串为数组的函数介绍与使用以及低版本php函数实现

    介绍 mb_str_split 指定多字节字符串,返回其字符数组.(适用版本PHP 7 >= 7.4.0, PHP 8) 说明 mb_str_split(string $string, int ...

  9. 怎样在excel中通过出生日期计算年龄

    转自:微点阅读  https://www.weidianyuedu.com/content/3119359228131.html 方法一 01: 在excel里可用公式=-A2)/365来计算出年龄. ...

最新文章

  1. Evaluation of long read error correction software 长读纠错软件的评估
  2. 橘子CPS联盟3.0版本升级手册
  3. flink sql udf jar包_编写Hive的UDF(查询平台数据同时向mysql添加数据)
  4. css图片自适应 有缝隙,有间隙,解决办法
  5. swing程序 过时拉嘛_从关闭或过时的应用程序导入文件
  6. Redis集群模式部署
  7. 加密芯片提升消费电子产品设备的安全性能
  8. 最常见到的runtime exception 异常
  9. 设置域用户帐户的登录时间
  10. Linux 安装MongoDB 并设置防火墙,使用远程客户端访问
  11. Linux 空间占用100%,查找大文件命令(亲测有效)
  12. Quartz.Net定时任务时间表达式设置
  13. 推荐几款2021年好用的固定资产管理系统(软件)
  14. openCV利用航拍相机从底部向上扫描物体拼接全景图
  15. 旅游类APP原型模板分享——爱彼迎
  16. linux多核操作命令,利用多核CPU加速你的Linux命令
  17. Fiddler简单的使用教程(入门级)
  18. 格斗机器人制造图纸_一种新型格斗机器人的制作方法
  19. u盘怎么格式化?格式化后如何恢复数据?4个详细教程
  20. 千万数据去重_基于 Flink 的百亿数据去重实践

热门文章

  1. 饿了么是如何做技术运营的
  2. 随机数在java 自旋锁的运用_Java 中自旋锁的实现
  3. RF使用技巧--导入自定义的库文件
  4. 大家来找茬辅助工具实现
  5. JAVA—— HTML
  6. 微软的DreamSpark计划-学生可免费使用vs2008 pro,sql server Dev 2005,Expression Studio等产品...
  7. Microsoft DreamSpark (微软向大学生免费提供开发软件)
  8. sxs卡数据怎么恢复?分享三种恢复方案
  9. 寻找团队的本质--从朗教授解读《士兵突击》开始
  10. 设置计算机的启动顺序CDROM.C.A,bios如何设置光驱启动顺序?三种BIOS设置光驱第一启动的方法详细图解...