我确定我已经用一个简短的公式看到了这一点,但我很难记住如何做到这一点。
我试图找到一个日期在一个区间内的位置,并将另一列与从该区间中的那一点到所有指定日期间隔的末尾相加。
因此,在下图中,区间在D和E列中,要查找的日期在单元格F1
中,即12/12/2016
。
我想找到12/12/2016
在范围内的位置,并相应地对F列求和,即12/12/2016 - 13/12/2016
(2天),然后所有后续时间段为2
+ 6+2+1+3 = 14
。我将此结果返回到单元格J14
。
我已经使用直方图的想法来计算这个,但是这个公式很大而且不实用,我只知道我已经看到了类似的问题,在SO的某个地方却无法找到它,这样就可以了仅SUMPRODUCT
和OFFSET
。我猜也可以使用FREQUENCY
。
所以我现在的目标是:
=SUMPRODUCT(OFFSET(F6,MATCH(TRUE,OFFSET(E6,0,0,COUNT(E6:E1048576),)>F1,0)-1,0,COUNTA(F6:F1048576),))-(F1-OFFSET(D6,MATCH(TRUE,OFFSET(E6,0,0,COUNT(E6:E1048576),)>F1,0)-1,,,))
如果我把它分成几个阶段,我会发现哪个桶(范围)具有目标值:
={MATCH(TRUE,OFFSET(E6,0,0,COUNT(E6:E1048576),)>F1,0)}
我用以下方法计算距离:
=F1-OFFSET(D6,H13-1,,,)
我从这一点总结到范围的结尾:
=SUMPRODUCT(OFFSET(F6,H13-1,0,COUNTA(F6:F1048576),))-I13
那么,任何人都可以帮助我使用更短效的配方吗?
数据:
| Start of measurement | 12/12/2016 | |
|----------------------|------------|----------------|
| | | |
| | | |
| | | |
| From | To | Number of days |
| 13/11/2016 | 17/11/2016 | 5 |
| 10/12/2016 | 13/12/2016 | 4 |
| 03/02/2017 | 08/02/2017 | 6 |
| 06/12/2017 | 07/12/2017 | 2 |
| 09/12/2017 | 09/12/2017 | 1 |
| 12/12/2017 | 14/12/2017 | 3 |
答案 0 :(得分:1)
这个怎么样?
=SUMIFS(F6:F11,D6:D11,">="&F1)+MINIFS(E6:E11,E6:E11,">="&F1)-F1+1
SUMIFS()
代表6+2+1+3
部分,MINIFS() - F1 + 1
代表2
部分。
请注意,___IFS()
函数更新,在旧版本的Excel中不可用。
答案 1 :(得分:1)
这应该适合你:
=SUMIF(E6:E11,">="&F1,F6:F11)-F1+INDEX(D6:D11,MATCH(F1,D6:D11))