我想要了解某个特定月份内某个商品的开仓和收仓日期之间的平均天数。
因此,从以下示例来看,2013 年 1 月,项目 2、5 和 6 已关闭(关闭状态可以是已解决或已取消),每个项目分别开放 26、9 和 6 天。因此,对于关闭日期在 2013 年 1 月(2013 年 1 月 1 日至 2013 年 2 月 13 日之间)的工作,它们的平均开放时间(开放日期和关闭日期之间)为 13.67 天至 2dp。
我尝试了几种方法来实现这个功能,我认为我遇到的问题出在 AVERAGE 函数上。
商品编号 开仓日期 状态 收仓日期 1 2012 年 1 月 6 日 已解决 2012 年 7 月 16 日 2 20/12/2012 已解决 16/01/2013 3 2013 年 2 月 1 日 进行中 4 2013 年 3 月 1 日 取消 2013 年 7 月 5 日 5 2013 年 3 月 1 日 已解决 2013 年 12 月 1 日 6 2013 年 4 月 1 日 已解决 2013 年 10 月 1 日 7 1/02/2013 已解决 15/02/2013 8 2013 年 2 月 2 日 开放 9 7/02/2013 取消 26/02/2013
答案1
添加一个辅助列,用于计算开盘价和收盘价之间的差额。添加另一个辅助列,用于提取月份数。然后,您可以将 AverageIfs() 用于多个条件。
如果您不想使用辅助列,您可以使用 Sumprodcut() 公式。
从第 2 行开始,向下复制辅助列的公式
E2 =IF(Sheet1!$D2>0,Sheet1!$D2-Sheet1!$B2,"")
F2 =MONTH(Sheet1!$B2)
在屏幕截图中,单元格 H2 使用带有公式的辅助列
=AVERAGEIF(Sheet1!$F$2:$F$10,1,Sheet1!$E$2:$E$10)
单元格 H4 不使用任何辅助列。公式为
=SUMPRODUCT(--(MONTH(B2:B10)=1),--(D2:D10<>0),(D2:D10)-(B2:B10))/SUMPRODUCT(--(MONTH(B2:B10)=1),--(D2:D10<>0))
[编辑] 我刚刚意识到您想要根据请求关闭的月份来计算平均值,因此您想将 F2 更改为
=MONTH(Sheet1!$D2)
和/或 H4 中的公式
=SUMPRODUCT(--(MONTH(D2:D10)=1),--(D2:D10<>0),(D2:D10)-(B2:B10))/SUMPRODUCT(--(MONTH(D2:D10)=1),--(D2:D10<>0))
两种情况的结果都是 14。