时间值在表格Excel中的随机分布-电网建模

时间:2018-07-31 20:17:36

标签: excel modeling

我正在研究电动汽车的充电负荷模型。我附上了excel工作簿的链接,以便您更好地理解。

列B包含随机时间值 G到P列代表房屋,每座房屋可容纳1辆汽车。因此,每个时间值需要分布在一列中。现在,当汽车接通电源时,其负载将保持3个单元不变。

我希望excel随机分配这些汽车,例如4辆车分配到4座房屋,而其他车厢留空。

我能想到的是,每次分配一个随机房屋,然后使用带有IF函数的AND公式将随机时间与时间序列进行匹配,第二个条件将随机房屋与第1列进行匹配10。 我面临的问题是,该公式给出了一个值错误,并且仅在screenshot前面具有随机生成时间的行中有效。我知道我很想念一个很小的东西。请帮助我找到它

致谢

workbook

1 个答案:

答案 0 :(得分:1)

=IF(ISNA(MATCH(G$5,$C$6:$C$9,FALSE)),"",IF(AND(INDEX($B$6:$B$9,MATCH(G$5,$C$6:$C$9,FALSE))>=$F6,INDEX($B$6:$B$9,MATCH(G$5,$C$6:$C$9,FALSE))<=$F6+TIME(0,30,0)),11,""))

AND中的两个元素在C列中找到门牌号,并在B列中返回相应的时间。

第一个元素将F中的时间与该时间进行比较。第二个元素将时间+ 30分钟与F(三个单元格)进行比较。如果介于两次之间,则得到11。

ISNA确保所讨论的房子在列表中。您也可以使用IFERROR,但我更喜欢ISNA的精度。

更新

如果要让值回绕,则需要OR与第二天进行比较。

=IF(ISNA(MATCH(G$5,$C$6:$C$9,FALSE)),"",IF(OR(AND(ROUND($F6,5)>=ROUND(INDEX($B$6:$B$9,MATCH(G$5,$C$6:$C$9,FALSE)),5),ROUND($F6,5)<=ROUND(INDEX($B$6:$B$9,MATCH(G$5,$C$6:$C$9,FALSE))+TIME(0,30,0),5)),AND(ROUND($F6+1,5)>=ROUND(INDEX($B$6:$B$9,MATCH(G$5,$C$6:$C$9,FALSE)),5),ROUND($F6+1,5)<=ROUND(INDEX($B$6:$B$9,MATCH(G$5,$C$6:$C$9,FALSE))+TIME(0,30,0),5))),11,""))

该公式结构类似于

=If(isna(),"",if(or(and(today,today),and(tomorrow,tomorrow)),11,"")

这个公式已经太大了。如果将其作为三个电压的三倍,它将是巨大的。您应该考虑在VBA中编写UDF。它不会很快计算出来,但可能会更易于维护。

如果要坚持使用公式,可以将瓦数放在门牌号上方的第4行中。然后在另一个表格中,列出要充电的瓦数和分钟数。因此,例如,您拥有B12:C14

3.7 120
11  30
22  15

现在您的公式中有11的位置,您将有G$4,而两个放置了TIME(0,30,0)的地方,您将有TIME(0,INDEX($C$12:$C$14,MATCH(G$4,$B$12:$B$14,FALSE)),0)。我重新整理了一些东西以使其更“可读”(但这仍然很困难),这是最终公式

=IF(ISNA(MATCH(G$5,$C$6:$C$9,FALSE)),"",IF(OR(AND(ROUND($F6,5)>=ROUND(INDEX($B$6:$B$9,MATCH(G$5,$C$6:$C$9,FALSE)),5),ROUND($F6,5)<=ROUND(INDEX($B$6:$B$9,MATCH(G$5,$C$6:$C$9,FALSE))+TIME(0,INDEX($C$12:$C$14,MATCH(G$4,$B$12:$B$14,FALSE)),0),5)),AND(ROUND($F6+1,5)>=ROUND(INDEX($B$6:$B$9,MATCH(G$5,$C$6:$C$9,FALSE)),5),ROUND($F6+1,5)<=ROUND(INDEX($B$6:$B$9,MATCH(G$5,$C$6:$C$9,FALSE))+TIME(0,INDEX($C$12:$C$14,MATCH(G$4,$B$12:$B$14,FALSE)),0),5))),G$4,""))