Excel 如何使用AverageIf工作表函数计算平均日期差异(如果填写了日期)

Excel 如何使用AverageIf工作表函数计算平均日期差异(如果填写了日期),excel,excel-formula,conditional-formatting,array-formulas,Excel,Excel Formula,Conditional Formatting,Array Formulas,我正在总结一系列任务,以及相应的日期(开始日期、首次回答日期等) 它大致如下所示: Title Start date First answer Task1 29/06/2018 02/07/2018 Task2 09/05/2018 Task3 13/06/2018 14/06/2018 我想计算给出第一个答案所需的平均时间。如果尚未给出第一个答案,则在计算平均值时需要忽略此条目 为了更好地理解公式,我决定使用标题名称,如: Name "Hea

我正在总结一系列任务,以及相应的日期(开始日期、首次回答日期等)

它大致如下所示:

Title    Start date    First answer
Task1     29/06/2018   02/07/2018
Task2     09/05/2018   
Task3     13/06/2018   14/06/2018
我想计算给出第一个答案所需的平均时间。如果尚未给出第一个答案,则在计算平均值时需要忽略此条目

为了更好地理解公式,我决定使用标题名称,如:

Name "Header_Title"        has value "Title"
Name "Header_Start_Date"   has value "Start Date"
Name "Header_First_Answer" has value "First answer"
此外,定义为
COUNTA(偏移量(Header\u Title;1;0):A1048576)
的条目数有一个名称:
Total\u Count

接下来,我为列值的范围创建了名称:

"All_Start_Dates"    is defined as =OFFSET(Header_Start_Date;1;0):OFFSET(Header_Start_Date;Total_Count;0)
"All_First_Answered" is defined as =OFFSET(Header_First_Answer;1;0):OFFSET(Header_First_Answer;Total_Count;0)
说明:获取标题下的第一个条目(列标题)并转到对应于最后一个任务的行

这使得编写用于计算这些日期列之间平均差值的公式变得非常容易:

{=AVERAGE(All_First_Answered_Dates-All_Start_Dates)}
// mind the {} for showing this is an array formula
现在的问题是:如何使用
AverageIf
工作表函数,以便不考虑未填写
第一个答案的情况?
我已经试过使用
>0“
”&0
,但这不起作用,据说公式无效:

{=AVERAGEIF(All_First_Answered_Dates-All_Start_Dates;">0")}
{=AVERAGEIF(All_First_Answered_Dates-All_Start_Dates;">"&0)}
有人有想法吗?
提前谢谢

p.s.1.如您所见,我使用单元格范围
A1048576
作为列
A
的最后一项,有人知道更优雅的方式来描述这一点吗?
还有一件事会让我的生活更轻松,那就是可以看到哪些单元格有名称(我在考虑条件格式,但我没有找到这样做的方法)。有人知道是否有方法高亮显示与名称链接的单个单元格吗?

试试数组公式

如果您不熟悉数组公式,显著的区别是按住Ctrl+Shift键,然后按Enter键,而不是只按Enter键。您将看到前面的公式和后面的花括号。不要打字。这些将自动显示

=AVERAGE(IF(INDIRECT("C14:C"&LOOKUP(2,1/(A:A<>""),ROW(A:A)))=0,"",INDIRECT("C14:C"&LOOKUP(2,1/(A:A<>""),ROW(A:A)))-INDIRECT("B14:B"&LOOKUP(2,1/(A:A<>""),ROW(A:A)))))
=平均值(如果(间接(“C14:C”和查找(2,1/(A:A)”),行(A:A))=0,”,间接(“C14:C”和查找(2,1/(A:A)”),行(A:A)))-间接(“B14:B”和查找(2,1/(A:A)”,行(A:A‘))

所以我建议的答案是

=AVERAGEIF(All_First_Answered,">0")-AVERAGEIF(All_First_Answered,">0",All_Start_Dates)
我在这里假设所有的开始日期都存在,但是第一个回答的日期可能会丢失:如果使用AVERAGEIFS,您可以很容易地为开始日期添加一个额外的条件。公式的两部分都包含相同的条件,因此它们在相同的行上工作


上面的中间列只是为了解释而包括在内。

不使用
A1048576
-条目数应为
COUNTA(A:A)-1
如果两个日期都提供了,你能在末尾添加另一列来计算两个日期之间的差异,然后取平均值吗?我认为平均值(x-y)与平均值(x)-平均值(y)是一样的,只要x和y是成对的,因此,您可以使用两个averageif?您定义的名称也可以定义为偏移量(Header\u Start\u Date,1,0,Total\u Count,1),即从Header Start Date开始,向下一行零列,然后通过Total\u Count行和一列扩展选择。@Zac:您是对的,这确实是人们使用Excel的一般方式,但这意味着我需要隐藏列,我不喜欢这样做,数组公式看起来是一个很好的方法。我知道数组公式是什么:我只是出于可读性原因键入了花括号(我不在公式中键入它们)。至于你的公式:我试过了,但它给出了
#Value
结果。顺便问一下,结果会怎样?我很抱歉。我没有看到你从第14行开始的评论。我已经编辑了上面的响应,从第14行开始,考虑到在数据集中间可能是空的任何行。谢谢。我相信这可能是一个关于如何使用此工作表功能的非常好的示例。感谢您的反馈,谢谢。