table Excel 中的时间值随机分布 - 电网建模

Distribution of time values randomly in a table Excel - Modeling Power Grid

我正在研究电动汽车充电负载的模型。我将 link 附加到 excel 工作簿,以便您更好地理解。

B 列包含随机时间值 G 到 P 列代表房子,每个房子可以有 1 辆车。因此,每次值都需要分布在一列中。现在,当汽车接通电源时,它的负载对于 3 个电池保持不变。

我希望 excel 随机分配这些汽车,例如4车4房,其他留空

我能想到的是,每次分配一个随机房屋然后使用 IF 公式和 AND 函数将随机时间与时间序列匹配,第二个条件将随机房屋与列匹配1-10。 我面临的问题是,该公式给出了一个值错误,并且只适用于前面有随机生成时间的行 screenshot。我知道我遗漏了一件非常小的事情。请帮我找到它

此致

workbook

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

AND中的两个元素在C列中找到门牌号,return在B列中找到对应的时间

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

ISNA 确保有问题的房子在列表中。您也可以使用 IFERROR,但我更喜欢 ISNA.

的精度

更新

如果您希望值环绕,您需要OR与第二天进行比较。

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

那个公式结构看起来像

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

这个公式已经变得太大了。如果将三个电压的电压增加三倍,那将是巨大的。您应该考虑在 VBA 中编写一个 UDF。它的计算速度不会那么快,但可能更易于维护。

如果您想坚持使用公式,可以将瓦数放在门牌号上方的第 4 行中。然后在另一个 table 中列出充电的瓦数和分钟数。所以,比如说,B12:C14 你有

3.7 120
11  30
22  15

现在公式中有 11 的地方,你有 G,两个地方你有 TIME(0,30,0),你有 TIME(0,INDEX($C:$C,MATCH(G,$B:$B,FALSE)),0)。我重新安排了一些东西以使其更多 'readable'(但它仍然很困难)这是最终公式

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