如果您有一系列用随机的,未排序的日期填充的单元格,则可能需要弄清楚有多少个日期介于开始日期和结束日期之间。例如,如果B1:B101包含随机日期,单元格E1包含开始日期,单元格E2包含结束日期,则您可能想知道可以在单元格E4中使用哪种类型的公式来返回B1中的日期数:B101介于E1和E2之间。

实际上,您可以通过几种不同的方法来获得解决方案。

当然,第一种方法是简单地在B列中日期右边的每个单元格中添加一个公式,如果日期在E1和E2之间,则该公式返回1,否则返回0。然后,您可以对列求和以得到所需的计数。您将在日期右边的每个单元格中使用以下公式:

=IF(AND(B1>=E$1,B1<=E$2),1,0)

此特定公式进入单元格C1,然后可以向下复制到单元格C2至C101。然后,在单元格E4中,您需要做的就是使用以下公式:

=SUM(C1:C101)

当然,这样做的缺点是C1:C101中的附加值会对精心制作的工作表的外观造成破坏。幸运的是,有一些方法可以找到正确的结果,而无需使用中间值。

一种方法是使用数组公式。将下面的公式放在单元格E4中即可解决问题。您需要做的就是记住使用Shift + Ctrl + Enter输入公式。 (这表明Excel正在输入数组公式。)

=COUNT(IF((B1:B101>$E$1)*(B1:B101<$E$2),B1:B101))

如果您不想使用数组公式,则可以在E4中使用以下基于COUNTIF的标准公式:

=-COUNT(B1:B101)+COUNTIF(B1:B101,">"&E1)+COUNTIF(B1:B101,"<"&E2)

当您输入此公式时,Excel将假定您正在返回一个日期值,因此将有用地将单元格设置为日期格式。您只需要做的就是使用“格式|单元格使用日期格式以外的格式(例如常规)格式化单元格。

该公式通过计算早日期之后的所有日期加上晚日期之前的所有日期来工作。这实际上对所有日期计数一次,然后对所需的选择进行重复计数。通过减去范围内的日期数(在公式的开头),该公式有效地消除了除所需结果以外的所有结果。

如果愿意,还可以使用DCOUNT函数返回所需的计数。但是,这只是涉及更多一点。与早期解决方案不同,DCOUNT依赖于命名范围的使用。请按照下列步骤操作:

。在数据顶部放置一个空白行,这会将所有内容向下推一个单元格。

。现在将日期放在单元格B2:B102中,选择单元格B1并在该单元格中放置一个标签,例如MyDates。

。根据需要格式化单元格B1。

。选择整个范围,包括标签(单元格B1:B102)。

。使用名称框(在行标题上方和列标题左侧),为范围定义一个名称。该名称应与您在步骤2(MyDates)中使用的名称相同。

。在单元格D1和E1中,放置标签名称(MyDates)。

。在单元格D2中,为日期范围输入一个大于号和一个较低日期,如“> 4/1/2002”(不带引号)。

。在单元格E2中,输入一个小于号和日期范围的上限日期,例如“ <6/1/2002”(不带引号)。

。在单元格E4中,输入以下公式:

=DCOUNT(MyDates,1,D1:E2)

DCOUNT函数使用您在D1:E2中指定的条件来检查定义为MyDates的数据范围,并返回满足这些条件的单元格计数。

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

本技巧(11839)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: