发布于 2018-07-31 20:58:35
=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,""))https://stackoverflow.com/questions/51621420
复制相似问题