产品日期

时间:2015-06-18 20:59:23

标签: excel vba excel-vba

我有一个名为“ISO程序主列表”的电子表格工作表,其中请求程序的日期位于 column G (Format m/dd/yyyy).

在H栏中输入完成程序的日期。 H列使用相同的日期格式,但可能包含空格(过程尚未完成)。

电子表格中目前有67行信息,从2011年到2015年,这一数字将继续增长。

问题,我想获得从程序请求 (column G) 到完成程序的平均时间(以天为单位)对于特定年份中请求的所有程序,(column H)

换句话说,在一年中完成手术所需的平均时间(以天为单位)。

此答案将位于同一工作簿中的单元格 C34 中,但名为 “ISO Matrix” 的工作表不同。 (这个信息可能没关系,但我想我会加上我以防万一)

我尝试了几个Sumproduct变种但没有成功。

1 个答案:

答案 0 :(得分:0)

假设:

  1. G和H列中的日期是日期,而不是文本字符串
  2. 数据从第2行开始,第1行用于标题。
  3. 为方便起见,我假设您已将您希望平均的范围命名为requestDate和completeDate
  4. 您希望从平均计算中省略未完成过程的行。
  5. 命名范围后,在" ISO矩阵"中输入以下公式到C34;标签:

    =AVERAGE(IF(completeDate<>"";completeDate-requestDate))
    

    这是一个数组公式,所以当正常按Enter键时,请记住按CTRL + SHIFT + ENTER。突出显示单元格时,它将如下所示:

    {=AVERAGE(IF(completeDate<>"";completeDate-requestDate))}
    

    注意:我的语言包使用;作为公式分隔符,因此,如果您使用语言,则将公式更改为:

    =AVERAGE(IF(completeDate<>"",completeDate-requestDate))
    
    编辑:所以,我没有意识到你需要按年平均。根据我最近的公式,它可以根据您的要求进行更新。

    =AVERAGE(IF(completeDate<>"";IF(YEAR(requestDate)=A15;completeDate-requestDate)))
    

    其中A15持有您感兴趣的年份。我在第一个IF而不是两个IF中尝试使用AND,但这似乎不起作用。请注意,您可能仍需要改变; to,你还需要CTRL + SHIFT + ENTER。

    您还可以添加以下代码,以处理测试列表中不存在的年份的情况:

    =IFERROR(AVERAGE(IF(completeDate<>"";IF(YEAR(requestDate)=A15;completeDate-requestDate)));"No such year")
    

    ......或类似的东西