逻辑删除日期数学(Microsoft Excel)
罗伯特(Robert)喜欢从事家谱研究。有时候,当他找到一个较老的墓地时,与其在墓碑上看到出生和死亡的日期,不如看到一个日期和一个年龄。例如,“出生:1801年1月18日,死于81岁,11个月,17天”或“年龄:93岁,8个月,22天,于1901年3月18日死亡”。罗伯特想知道是否有任何方法可以计算出当天的遗漏日期。
有一种方法可以执行此操作,但不涉及使用常规工作表函数。 Excel提供了丰富的工作表功能,可让您操作日期,而Excel的“基础日期”是1900年1月1日;这是计算所有日期的日期。 (您可以将基准日期更改为1904,但只能更改为四年。此功能是为了与Mac上的Excel兼容。)这意味着可以将较早的日期(例如您在公墓中为家谱查找的日期)不能直接在Excel中计算。
幸运的是,VBA没有此限制。这意味着您可以轻松创建用户定义的函数(宏),该函数将为您进行数学运算。首先放置开始日期(出生或死亡日期)
在单元格B1中。然后,在单元格B2:B4中输入您要调整开始日期的年数,月数和天数。因此,如果B1包含生日,则单元格B2:B4应该为正(您要将它们添加到开始日期)。如果B1包含死亡日期,则B2:B4应该为负(您要从开始日期中减去它们)。
然后,创建此宏:
Function FindDate(Start As Date, iYrs As Integer, _ iMths As Integer, iDays As Integer) Application.Volatile Dim D As Date D = DateAdd("yyyy", iYrs, Start) D = DateAdd("m", iMths, D) D = DateAdd("d", iDays, D) FindDate = Format(D, "m/d/yyyy") End Function
在要显示计算日期的任何单元格中,都可以输入以下公式:
=FindDate(B1,B2,B3,B4)
该函数的结果是一个格式化的日期,表示由您指定的年,月和日调整的开始日期。因此,如果单元格B1包含1/18/1801,单元格B2包含81,单元格B3包含11,单元格B4包含17,则该函数将返回1/4/1883。同样,如果单元格B1包含3/18/1901,单元格B2包含-93,单元格B3包含-8,单元格B4包含-22,则返回的结果将是6/26/1807。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(12277)适用于Microsoft Excel 2007、2010、2013和2016。您可以在下面的Excel的较旧菜单界面中找到此技巧的版本:“ link:/ excel-Tombstone_Date_Math [Tombstone Date Math]”。