Excel公式练习65: 查找并比较时间

2020-05-29 14:56:51 浏览数 (2)

学习Excel技术,关注微信公众号:

excelperfect

本次的练习是:如下图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(C20,MATCH(B2,B17:B20,0),0))),"Pass","Fail")

下拉至单元格E12。

公式解析

首先看公式中的:

MATCH(B2,B17:B20,0)

在单元格区域B17:B20中查找单元格B2中的值“SL3”出现的位置,显示结果为:3。

传递给INDEX函数:

INDEX(C17:C20,MATCH(B2,B17:B20,0),0))

即:

INDEX(C17:C20,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,C20,2,FALSE)),"Pass","Fail")

结果相同。

0 人点赞