DATEDIF在Excel中的范围上

时间:2013-09-25 02:28:51

标签: excel excel-formula excel-2010

我有一个Excel表格,其中有2列用于创建日期和关闭日期。我正在尝试获取一定范围内的生命值(生命周期=创建日期和关闭日期之间的#天数)。例如,有多少记录的生命周期为40天以上。

我无法修改表格以添加新列(我正在尝试在单独的工作表中关闭计算,而不使用数据修改主工作表)。

我试图做的是:

=COUNTIF(DATEDIF(MyTable[CreatedDate], MyTable[ClosedDate], "d"), "> 40")

该公式不起作用,我认为有几个原因:你不能将范围传递给DATEDIF,DATEDIF也会返回一个离散值,但COUNTIF需要一个范围。

看来我正在尝试做的事情显然不适用于Ranges。有没有办法在两个范围之间做一个DATEDIF,然后返回一个新的范围,以便我可以对它进行计算?或者其他一些方法来实现我的目标?

一些示例数据(生命周期不是我表格中的实际列,为方便起见,此处仅包括在内):

Created Date      Closed Date      Lifetime
9/20/2012         10/19/2012       29
9/20/2012         10/27/2012       37
9/20/2012         12/26/2012       97
9/20/2012         10/23/2012       33
9/20/2012         11/23/2012       64
10/19/2012        12/14/2012       56

注意:每条记录都有一个有效的创建和关闭日期。

更新:@pnuts提出了一个可能有效或无效的公式:

=COUNTIF(MyTable[ClosedDate], ">"&MyTable[CreatedDate]+40)

我不确定到底发生了什么,但根据我的工作表中的哪些单元格,我将该公式放入其中会得到不同的结果。这是一个截图,每个单元格都有一个相同的公式,如公式栏所示。

enter image description here

如果有人想在我的示例Excel文件中试用它,您可以在此处抓取它:Sample Excel File

2 个答案:

答案 0 :(得分:2)

请注意,如果您将@pnuts的公式用作数组公式,即使用 Ctrl + Shift + Enter ,则该公式有效。

您可以使用的非数组公式是:

=SUMPRODUCT(((Table1[Closed Date]-Table1[Created Date])>40)*1)

Table1[Closed Date]-Table1[Created Date]是日期之间的差异,当你把>40放在它之后,你会得到一系列布尔值(真/假),最后的*1转换为真为1,False为0. SUMPRODUCT将它们全部加起来。

答案 1 :(得分:1)

使用此数组公式(Ctrl + Shift + Enter):

=SUM(IF((Table[ClosedDate])-(Table[CreatedDate])>=40,1,0))