Excel IF出生日期范围的公式

时间:2015-01-13 15:29:40

标签: excel-formula

我希望有人可以帮助我和If / Then公式:

我需要一个公式,告诉我在Bcell B3中输入的出生日期是在2009年8月1日至2012年12月31日期间的12-24个月之间。例如,2008年11月1日出生的人在2009 - 2012年的12-24个月之间,因此该值应在单元格D4中返回YES。如果孩子不满12个月或超过24个月,则Cell值为no。

同样在细胞D4中,如果在细胞B3和细胞B4中有两个出生日期并且在8/01/2009至12/31/2012期间两者都未满6岁,则值应返回是。例如,在单元格B3中输入出生日期为11/1/2005,在单元格B4中输入的出生日期是8/1/2004,因此单元格D4中的值应为是。如果两个孩子都不满6岁,那么单元格值将为No。

希望有人可以帮助我,

谢谢

3 个答案:

答案 0 :(得分:1)

在创建Excel公式之前,首先要做一些数学运算来简化问题。

在12/31/2012,年龄最小的孩子将在12月31日之前完成12个月,因此生日期为12/31/2011。

日期范围内最大的孩子将于2009年8月1日正好24个月,出生日期为8/01/2007。

此公式将检查某个范围内的日期:

=IF(AND(B3>=DATE(2007,8,1),B3<=DATE(2011,12,31)),"Yes","No")

您需要仔细检查边界条件。例如,如果孩子在2009年8月1日完全过了1岁生日,你还想包括它们吗?如果没有,请将>=更改为>

第二个问题也是四个日期比较的AND',您现在可以解决这个问题。 唯一棘手的事情是当B3或B4是空白时。使用日期比较时,空白或0等于12/31/1899。这将使当前年龄超过100岁,这将无法通过年龄测试。

答案 1 :(得分:0)

我认为我有一个解决方案可以解决我理解你的问题。我使用B6B7来保存您的范围的年份。 B6已包含2009年,B7已进入2012年。

=IF(B4="",IF(AND((DATE(B6,1,1)-B3)/30<=12,(DATE(B7,1,1)-B3)/30>=24),"Yes","No"),IF(AND((DATE(B7,1,1)-B3)/30>=72,(DATE(B7,1,1)-B4)/30>=72),"Yes","No"))

稍微分解一下:

测试B4

中是否有日期
=IF(B4=""

如果没有,那么我们需要看看孩子在这个时期开始时是不到12个月还是在这个时期结束时超过24个月。 (使用AND让我们确保孩子在开始后12个月和结束前24个月开始)

IF(AND((DATE(B6,1,1)-B3)/30<=12,(DATE(B7,1,1)-B3)/30>=24),"Yes","No")

如果有2个日期,请检查两个孩子在结束日期之前是否少于72个月(B7)。

IF(AND((DATE(B7,1,1)-B3)/30>=72,(DATE(B7,1,1)-B4)/30>=72),"Yes","No")

答案 2 :(得分:0)

Excel将日期识别为数值。以下是我定义的日期范围。我需要开发一些能够根据日期范围标准引用不同VLOOKUP数据的东西。这可以在一个大的公式中使用,您可以根据需要随意添加。有很多方法可以写这个。

这是另一种方式:

"=IF(ISBLANK(C[-7]),""""," & _
"IF(AND(C[-7]>=42571,C[-7]<=42572),(VLOOKUP(C[9],'C:\Users\etabakman\Desktop\[BillNet Master List - current.xlsx]07-20-2016'!C39:C41,2,FALSE))," & _

"IF(AND(C[-7]>=42573,C[-7]<=42582),(VLOOKUP(C[9],'C:\Users\etabakman\Desktop\[BillNet Master List - current.xlsx]07-22-2016'!C39:C41,2,FALSE))," & _

"IF(AND(C[-7]>=42583,C[-7]<=42586),(VLOOKUP(C[9],'C:\Users\etabakman\Desktop\[BillNet Master List - current.xlsx]08-01-2016'!C39:C41,2,FALSE))," & _

"IF(AND(C[-7]>=42587,C[-7]<=42593),(VLOOKUP(C[9],'C:\Users\etabakman\Desktop\[BillNet Master List - current.xlsx]08-05-2016 V2'!C39:C41,2,FALSE))," & _

"IF(AND(C[-7]>=42594,C[-7]<=42735),(VLOOKUP(C[9],'C:\Users\etabakman\Desktop\[BillNet Master List - current.xlsx]BillNet Master list'!C39:C41,2,FALSE))))))))"