【问题标题】:Sumproduct datesSumproduct 日期
【发布时间】:2015-06-18 20:59:22
【问题描述】:

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

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

电子表格中目前有 67 行信息,时间跨度从 2011 年到 2015 年,而且这个数字还会继续增长。

QUESTION,我想知道从程序请求 (column G) 到完成程序 @987654323 所用的平均时间(以天为单位) @ 用于在给定年份请求的所有程序。

换句话说,在给定年份完成程序所需的平均(以天为单位)时间。

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

我尝试了几种 Sumproduct 变体,但均未成功。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    假设:

    1. G 和 H 列中的日期是日期,而不是文本字符串,
    2. 数据从第 2 行开始,使用第 1 行作为标题。
    3. 为方便起见,我假设您已经命名了希望平均 requestDate 和 completeDate 的范围
    4. 您希望从平均计算中省略过程未完成的行。

    命名范围后,在“ISO 矩阵”选项卡的 C34 中输入以下公式:

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

    这是一个数组公式,所以平时按回车的时候,记得按CTRL+SHIFT+ENTER代替。突出显示单元格时,它将如下所示:

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

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

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

    编辑:所以,我没有发现您需要按年平均。根据我最近的公式,它可能会根据您的要求进行更新。

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

    其中 A15 包含您感兴趣的年份。我在第一个 IF 中使用 AND 而不是两个 IF 进行了尝试,但这似乎不起作用。请注意,您可能仍需要更改;到 , 你还需要 CTRL+SHIFT+ENTER 来完成这个。

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

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

    ...或类似的东西

    【讨论】:

    • @carl5859 使用=IsNumber(G3) 测试单元格是否为数字(日期为数字)。使用=IsText(G3) 测试单元格是否为文本字符串。
    • - 日期是数字
    • 您的假设是正确的 公式所在的工作表(单元格 C34)称为“ISO 矩阵”。日期所在的工作表(G&H 行)是“ISO 程序主列表”。尝试了上述公式并得到“#Name”。我迎合了主列表工作表得到“#Name”。示例 =AVERAGE(IF('ISO 过程主列表'!completeDate"",'ISO 过程主列表'!completeDate-A1:A5)) 不成功公式的示例。 =SUM(IF(ISNUMBER('ISO 程序主列表'!H:H),'ISO 程序主列表'!H:H-'ISO 程序主列表'!G:​​G,0))/COUNT(IF(ISNUMBER ('ISO 程序主列表'!H:H),1,"X"))
    • 这个公式几乎奏效了,但我无法让它具体到年份。这平均了整个列。 =SUM(IF(ISNUMBER('ISO 程序主列表'!H:H),'ISO 程序主列表'!H:H-'ISO 程序主列表'!G:​​G,0))/COUNT(IF(ISNUMBER ('ISO 程序主列表'!H:H),1,"X"))
    • 不知道这是怎么发生的,但我的公式有错误。你当然应该使用命名范围 requestDate 而不是 A1:A5,所以如果你按照我的建议从第 2 行开始,前面的公式就会出错。他们现在得到纠正。确保公式中的 completeDate 和 requestDate 与您的命名范围完全匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多