专栏名称: 完美Excel
Excel与VBA技术学习与实践
目录
相关文章推荐
完美Excel  ·  在Excel和Word中集成deepseek ·  3 天前  
Excel之家ExcelHome  ·  DeepSeek办公自动化:一秒生成工作表目录 ·  2 天前  
Excel之家ExcelHome  ·  70岁老妈用DeepSeek变身‘AI达人’ ... ·  3 天前  
Excel之家ExcelHome  ·  开工第一天,Excel崩了 ·  3 天前  
完美Excel  ·  deepseek使用心得1 ·  4 天前  
51好读  ›  专栏  ›  完美Excel

对比deepseek,编写计算年龄的自定义函数

完美Excel  · 公众号  · Excel  · 2025-02-09 07:49

正文

学习Excel技术,关注微信公众号:
excelperfect

标签: Excel 公式 LAMBDA 函数 deepseek

如下图 1 所示,列出了计算年龄的几个公式。

1
在图 1 中,单元格 A2 是某人的生日, B2 中使用 TODAY 函数获得当天的时间。可以使用 DATEDIF 函数来分别计算两个日期之间的年月日。

DATEDIF 函数需要一个开始日期和一个结束日期,然后需要提供一个文本代码以确定所执行的计算类型。如果使用代码“ y ”则返回两个日期之间的完整年数,如单元格 B4 ;如果使用代码“ ym ”则返回计算完整年份后的完整月份数,如单元格 B5 ;如果使用代码“ md ”则返回计算完整月份后的完整天数,如单元格 B6

可以使用 LET 函数合并所有数字并添加一些文本。单元格 B8 中的公式为:

=LET(s,A2,e,B2,DATEDIF(s,e,"y") & " " & DATEDIF(s,e,"ym")

LET 函数允许在公式中使用变量。示例中,名为 s 的变量用于捕获开始日期,名为 e 的变量用于捕获结束日期。然后,可以使用这些变量进行计算。三个单独的 DATEDIF 函数将其与一些文本组合在一起,以创建最终的输出请注意,使用 & 符号将文本连接在一起。

LAMBDA 函数允许使用变量,可以利用 Excel 的“定义名称”功能创建自定义函数。示例中,我们先在工作表中使用 LAMBDA 函数来创建自定义函数,如示例工作表单元格 B11

=LAMBDA(start,end,LET(s,start,e,end,DATEDIF(s,e,"y") & " " & DATEDIF(s,e,"ym") & " 个月 " & DATEDIF(s,e,"md") & " "))(A2,B2)

工作表单元格 B14 对上述公式进行了改进,只需要提供开始日期(出生日期),使用 TODAY 函数计算今天的日期,而使用可选参数时,需要将该参数放在方括号中,并在 IF 函数中使用 ISOMITTED 函数来识别是否包含了该参数。单元格 B14 中的公式为:

=LAMBDA(start,[end],LET(s,start,e,IF(ISOMITTED(end),TODAY(),end),DATEDIF(s,e,"y") & " " & DATEDIF(s,e,"ym") & " 个月 " & DATEDIF(s,e,"md") & " "))(A2)

在工作表中测试一切正常后,可以使用名称来自定义函数,如下图 2 所示。

2
然后可以在工作表中使用这个函数,如示例工作表单元格 B17 所示。

下面是改进后的自定义函数:

=LAMBDA(start,[end],LET(s,start,e,IF(ISOMITTED(end),TODAY(),end),y,DATEDIF(s,e,"y"),ym,DATEDIF(s,e,"ym"),md,DATEDIF(s,e,"md"),y &" "&IF(y=1," ","s ")&ym &" "&IF(ym=1," ","s ")&md &" "))

下面,我们使用deepseek来编写这个函数。
向deepseek提问:
如何在Excel中使用LAMBDA函数编写一个计算年龄的自定义函数,并显示结果为几岁几月几天?
下面的deepseek给出的详细步骤:
步骤 1:定义自定义函数
1. 打开 Excel 并按Ctrl+F11打开“名称管理器”。
2. 点击“新建按钮 ,创建一个新的名称。
3. 在“名称”框中输入函数名称(例如:AGEWITHDETAILS )。
4. 在“引用位置”框中输入以下 LAMBDA 函数公式:
=LAMBDA(birthdate, [enddate TODAY()],
LET(
today, IF(enddate="", TODAY(), enddate),
years, DATEDIF(birthdate, today, "Y"),
months, DATEDIF(birthdate, today, "YM"),
days, DATEDIF(birthdate, today, "MD"),
TEXT(years, "0") & "岁" & TEXT(months, "00") & "月" & TEXT(days, "00") & "天"
)
)
● birthdate :出生日期。
● enddate :可选参数,默认为  TODAY() ,即当前日期。
● years :使用  DATEDIF  计算年份差。
● months :使用  DATEDIF  计算月份差(不计年份)。
● days :使用  DATEDIF  计算天数差(不计月份)。
● TEXT  函数用于格式化输出。
步骤 2:使用自定义函数
1. 在任意单元格中输入以下公式
=AGEWITHDETAILS(A1)
其中A1是包含出生日期的单元格。
1. 如果需要指定结束日期(非当前日期),可以使用以下公式:
=AGEWITHDETAILS(A1, B1)
其中  B1  是包含结束日期的单元格。示例
假设:
● A1 =  2000-01-15 (出生日期)
● B1 =  2023-12-31 (结束日期)
使用公式:
=AGEWITHDETAILS(A1, B1)
结果将显示为:






请到「今天看啥」查看全文