Johna需要确定某个特定日期是否在其他两个日期之间。例如,她可能需要确定2018年11月8日是否在2018年8月1日至2019年7月31日之间。她正在尝试找出做出此确定的公式。

实际上,您可以使用多种公式,从短到长。不过,在本技巧中,我将重点介绍较短的公式化方法。在这样做之前,最好记住日期(和时间)是由Excel在内部存储为数字的。小数点前的日期部分(数字的整数部分)是日期的序列号,小数点右边的部分是时间。

由于日期和时间存储为数字,因此简单地比较数字以确定哪个值更高或更低以及是否介于高和低之间就变得相对容易。例如,假设您在单元格A1中有开始日期(2018年8月1日),在单元格A2中有结束日期(2019年7月31日)。您可以将日期检查到单元格D1中,并使用以下公式:

=IF(AND(D1>=A1,D1<=A2),"Yes","No")

该公式将检查D1中的日期是否大于或等于A1且小于或等于A2。仅当满足这两个条件时,才返回“是”,否则返回“否”。 (请参见图1。)

image

图1.比较数字以确定哪个较高或较低以及在较高和较低之间。

如果您认为日期中包含时间,则可能需要通过去除代表时间的序列号部分来进行调整:

=IF(AND(TRUNC(D1,0)>=TRUNC(A1,0),TRUNC(D1,0)<=TRUNC(A2,0)),"Yes","No")

如果您实际上是在比较文本字符串而不是公认的Excel日期,则需要使用DATEVALUE函数将字符串转换为日期:

=IF(AND(DATEVALUE(D1)>=DATEVALUE(A1),DATEVALUE(D1)<=DATEVALUE(A2)),"Yes","No")

使用DATEVALUE函数的结果将类似于下图:(请参见图2。)

image

图2.使用DATEVALUE函数比较文本字符串以将字符串转换为日期。

到目前为止,每个公式都是相同的基本公式。它们之间唯一的区别是添加了附加功能,以补偿日期在单元格中的存储方式的特征。对于确定日期是否在其他两个日期之间的完全不同的方法,可以使用以下公式方法:

=IF(D1=MEDIAN(D1,A1,A2),"Yes","No")

由于MEDIAN函数是使用三个数字计算的,因此它总是返回介于较低数字和较高数字之间的数字。这意味着,如果D1确实位于其他两个之间,它将始终被返回;如果D1不在其他两个之间,则将返回另一个。

有趣的是,如果您稍微重组了数据以使三个值彼此相邻(例如,将比较日期从D1移至A3),则可以将三个单独的单元格引用替换为三个单元格的范围,使公式更短:

=IF(A3=MEDIAN(A1:A3),"Yes","No")

将MEDIAN方法用于AND方法的优点是,您不必担心比较的开始或结束日期是范围值(A1或A2)中的哪个-MEDIAN函数将所有结果进行排序。 (请参见图3。)

image

图3.使用MEDIAN函数比较值。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(12742)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。