我有两张桌子:
表1:
Start Date | End Date | Value
--------------------------------
dd.mm.yyyy | dd.mm.yyyy | 3
表2:
Start Date | End Date | Value
--------------------------------
dd.mm.yyyy | dd.mm.yyyy | ????
表2 的值应按以下方式计算:
示例:
表1:
Start Date | End Date | Value
--------------------------------
01.01.2015 | 05.01.2015 | 3
03.01.2015 | 08.01.2015 | 6
表2:
Start Date | End Date | Value
--------------------------------
02.01.2015 | 07.01.2015 | (4 * 3) + (5 * 6)
可以通过以下方式细分价值:
(表1中的4天交叉,第1行*第1行的值)+(表1中的5天交叉,第2行*第2行的值)
不幸的是,我真的不知道如何做到这一点。最好的是如果不涉及VBA(只有公式)。
有什么想法吗?
谢谢你!
答案 0 :(得分:0)
获取两个日期范围交集的基本公式为: -
MIN(End1,End2)-MAX(Start1,Start2)+1
如果结果为零或负数,则没有重叠。
我想把它放到一个数组公式中,因为每个结果必须乘以表1的同一行中的值,但MIN和MAX不起作用所以我最终得到了很多IF语句: -
=SUM(IF(IF($B$2:$B$3<F2,$B$2:$B$3,F2)-IF($A$2:$A$3>E2,$A$2:$A$3,E2)<0,0,
IF($B$2:$B$3<F2,$B$2:$B$3,F2)-IF($A$2:$A$3>E2,$A$2:$A$3,E2)+1)*$C$2:$C$3)
其中表1数据在A2:C3中,表2数据在E2:G2中。
需要使用 Ctrl Shift 输入
在G2中输入