2017-04-06 105 views
1

我有两列日期。一个是日期的移动,另一个是移出的日期。我想知道在第二个日期范围内租户有多少天在那里。例如:7月份我们有多少个“床位日”? 7/1/2016-7/31/2016总结一个日期范围内落在第二个日期范围内的天数

该函数计算每个租户每个月在那里的天数,但是如果我可以将整个计算放入一个单元格而不为每个单元创建虚拟列月。

=MAX(0,MIN(EOMONTH($B$2,0),I14)-MAX($B$2,H14)) 

我试图改变一些东西,并将其用作数组函数,但它不工作。我对数组函数非常陌生,所以我可能会完全错误。

=SUM(MAX(0,MIN(EOMONTH($B$2,0),I:I)-MAX($B$2,H:H))) 

任何帮助,非常感谢!让我知道你是否还需要更多信息。

+1

'B','I','H'列中有什么?你应该指定。 –

+0

抱歉,单元格“B2”是本月第一天我想要获得总床位天数。列“H”是日期的移动,“I”是移出日期。所有的日期都是简写为“M/D/Y”,第一列包含日期或单词“Active” –

+0

Hi Mike,请你只需编辑你的问题以包含一些我们可以使用的虚拟数据和你想要的东西期望公式的结果是 – CallumDA

回答

1

不好的消息 - 你不能在这样的数组公式中使用MAX和MIN,因为我们不把H和I当作两个数组,而只是将它们看作一个大的长数组,而你只能从中得到一个值。

您还需要将1添加到您的原始公式,因为如果他们在每个月的最后一天移动(说),它仍然应该算作一天。

如果更换MAX和MIN与IF语句,你得到这样的事情

=SUM(IF(IF(EOMONTH($B$2,0)<IF(I2:I10="Active",TODAY(),I2:I10),EOMONTH($B$2,0),IF(I2:I10="Active",TODAY(),I2:I10))-IF($B$2>H2:H10,$B$2,H2:H10)<0,0, 
IF(EOMONTH($B$2,0)<IF(I2:I10="Active",TODAY(),I2:I10),EOMONTH($B$2,0),IF(I2:I10="Active",TODAY(),I2:I10))-IF($B$2>H2:H10,$B$2,H2:H10)+1)) 

具有使用按Ctrl输入移位输入

enter image description here

如果你是数组新手,一个有用的提示是不要在数组fo中包含更多的行因为它会很慢,并且首先在少量行上进行测试,这样如果遇到麻烦,您可以使用“评估公式”逐步完成测试。

+0

谢谢你完美的作品! –

+0

谢谢,很高兴它为你工作。 –

+1

缩短公式的一种可能性是使用TEXT函数作为“伪”MAX函数,将负值转换为零,这将减少IF的数量,例如, '= SUM(TEXT(IF(IF(I2:I10 = “活动”,TODAY(),I2:I10)> EOMONTH(B2,0),EOMONTH(B2,0),IF(I2:I10 = “活动” ,TODAY(),I2:I10)) - IF(H2:H10> B2,H2:H10,B2)+1,“0;”“0”“”)+ 0)' –