如下图1所示,单元格区域A1:E12是一组数据,单元格区域B16:C20是一个标准查找表。其中,列D中的数据为对应的列C中的数据减去列A中的数据,例如D2=C2-A2;列E中的数据为:列B中的值在查找表B16:C20中查找相应的解决用时,然后与列D中的值比较,如果列D中的值小于查找到的解决用时,则输入“Pass”,否则输入“Fail”。如何使用公式在列E中输入相应的值?
如下图1所示,单元格区域A1:E12是一组数据,单元格区域B16:C20是一个标准查找表。其中,列D中的数据为对应的列C中的数据减去列A中的数据,例如D2=C2-A2;列E中的数据为:列B中的值在查找表B16:C20中查找相应的解决用时,然后与列D中的值比较,如果列D中的值小于查找到的解决用时,则输入“Pass”,否则输入“Fail”。如何使用公式在列E中输入相应的值?
图1
先不看答案,自已动手试一试。
公式
在单元格E2中,输入数组公式:
=IF((D2)<=(TIMEVALUE(INDEX($C$17:$C$20,MATCH(B2,$B$17:$B$20,0),0))),”Pass”,”Fail”)
下拉至单元格E12。
公式解析
首先看公式中的:
MATCH(B2,$B$17:$B$20,0)
在单元格区域B17:B20中查找单元格B2中的值“SL3”出现的位置,显示结果为:3。
传递给INDEX函数:
INDEX($C$17:$C$20,MATCH(B2,$B$17:$B$20,0),0))
即:
INDEX($C$17:$C$20,3,0))
获取单元格区域C17:C20中第3行的值:08:00。
然后将该值转换为时间序数:
TIMEVALUE(08:00)
得到:
0.333333333333333
将其与单元格D2中的值比较。在单元格D2中显示的是“时:分”格式,但Excel实际存储的是时间序数,因此可以正确地对两者进行比较。结果为:True,因此最终公式的结果为:
Pass
这个公式比较简单,关键是在比较前应使用TIMEVALUE函数将时间转换为序数。我们知道,Excel是以序数的形式存储时间的,一天的时间范围从0至0.99999999,代表0:00:00至23:59:59。序数可以这样换算:
小时数*60/一天的总分钟数
例如:8:00可以换算为:
8*60/1440=0.333333333333333
上面使用了MATCH/INDEX函数组合进行查找,本例中也可使用VLOOKUP函数来查找,公式为:
=IF(D2<TIMEVALUE(VLOOKUP(B2,$B$17:$C$20,2,FALSE)),”Pass”,”Fail”)
结果相同。