首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表Excel建模电网中时间值的随机分布

表Excel建模电网中时间值的随机分布
EN

Stack Overflow用户
提问于 2018-07-31 20:17:35
回答 1查看 68关注 0票数 1

我正在研制一种电动汽车充电负荷模型。我是附加到excel工作簿的链接,以使您更好地理解。

列B包含随机时间值,列G到P代表房屋,每栋房子可以有1辆车。因此,每一次值都需要分布在一列中。现在,当一辆车被插入,它的负荷保持不变的3个电池。

我想要excel随机分配这些汽车,例如4辆车到4栋房子,让其他车辆空置。

我能想到的是,每次指定一个随机房屋,然后使用IF公式和AND函数匹配随机时间序列,第二个条件匹配列1-10的随机房屋。我所面临的问题是,公式给出了一个值错误,并且只在有随机生成时间的行中工作,在它们前面是屏幕截图。我知道我错过了一件很小的事。请帮我找到它

问候

工作簿

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-31 20:58:35

代码语言:javascript
复制
=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比较。

代码语言:javascript
复制
=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,""))

这个公式结构看上去像

代码语言:javascript
复制
=If(isna(),"",if(or(and(today,today),and(tomorrow,tomorrow)),11,"")

这个公式已经太大了。如果你三倍于你的三个电压,它将是巨大的。您应该考虑用VBA编写一个UDF。计算起来不会那么快,但可能会更容易维护。

如果你想坚持一个公式,你可以把瓦特在第4行以上的房子号码。然后在另一张桌子上,列出要充电的瓦特数和分钟数。所以,比如说,B12:C14你有

代码语言:javascript
复制
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)。我重新安排了一些东西,以使它更“可读性”(但它仍然相当困难),这是最后的公式

代码语言:javascript
复制
=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,""))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51621420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档