【问题标题】:Amount of days of intersected date ranges (Table)相交日期范围的天数(表格)
【发布时间】:2015-11-19 08:57:33
【问题描述】:

我有 2 张桌子:

表 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. 查找表 1 中的所有行,其中表 1 的开始和结束日期 与表 2 的当前行开始和结束日期相交
  2. 对于这些行中的每一行,将表 1 的值乘以 相交的日子
  3. 总结这些价值

示例:

表 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(仅公式)。

有什么想法吗?

已经谢谢你了!

【问题讨论】:

  • 这里有两件事很重要:Excel 必须了解单元格的值是“日期”格式(验证单元格格式),一旦清楚,您可以使用 ´天函数,用于计算两天之间的天数。

标签: excel date excel-formula intersection


【解决方案1】:

获取两个日期范围交集的基本公式是:-

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 中。

这需要在 G2 中用 CtrlShiftEnter

输入

【讨论】:

  • 非常感谢!这给了我一个关于如何做的提示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-15
相关资源
最近更新 更多