excel将sheet1中的当前时间值与sheet2中的时间值范围进行比较

我试图比较从工作表1到工作表2的时间值,并得到工作表1 – B,C,D列中的紧密匹配值。 每当我刷新单元格A时,它应该自动更新B,C,C,D中的结果,看看预期的结果

表1显示当前时间,即单元格A1“= now()”

Sheet1 ---------------------------------------------------- | A | B | C | D | |--------------------------------------------------- | 12:55:00 | | | | ---------------------------------------------------- 

在表2中,数据有4列,如下所示

  -------------------------------------------------------- | No | Start | End | Date | |------------------------------------------------------- | 1 | 07:36:00 | 08:23:10 | 15/05/2015 | | 2 | 08:23:10 | 09:10:20 | 15/05/2015 | | 3 | 09:10:20 | 09:57:30 | 15/05/2015 | | 4 | 09:57:30 | 10:44:40 | 15/05/2015 | | 5 | 10:44:40 | 11:31:50 | 15/05/2015 | | 6 | 11:31:50 | 12:19:00 | 15/05/2015 | | 7 | 12:19:00 | 13:06:10 | 15/05/2015 | | 8 | 13:06:10 | 13:53:20 | 15/05/2015 | | 9 | 13:53:20 | 14:40:30 | 15/05/2015 | | 10 | 14:40:30 | 15:27:40 | 15/05/2015 | | 11 | 15:27:40 | 16:14:50 | 15/05/2015 | | 12 | 16:14:50 | 17:02:00 | 15/05/2015 | | 13 | 17:02:00 | 18:14:50 | 15/05/2015 | | 14 | 18:14:50 | 19:27:40 | 15/05/2015 | | 15 | 19:27:40 | 20:40:30 | 15/05/2015 | | 16 | 20:40:30 | 21:53:20 | 15/05/2015 | | 17 | 21:53:20 | 23:06:10 | 15/05/2015 | | 18 | 23:06:10 | 00:19:00 | 16/05/2015 | | 19 | 00:19:00 | 01:31:50 | 16/05/2015 | | 20 | 01:31:50 | 02:44:40 | 16/05/2015 | | 21 | 02:44:40 | 03:57:30 | 16/05/2015 | | 22 | 03:57:30 | 05:10:20 | 16/05/2015 | | 23 | 05:10:20 | 06:23:10 | 16/05/2015 | | 24 | 06:23:10 | 07:36:00 | 16/05/2015 | --------------------------------------------------------- 

预期

Sheet1 – 如果当前时间是15/05/2015的12:55:00

 ----------------------------------------------------------------------------- | A | B | C | D | E | |-----------------------------------------------------------|---------------| | 12:55:00 | 7 | 12:19:00 | 13:06:10 | 15/05/2015 | ----------------------------------------------------------------------------- 

Sheet1 – 如果当前时间是2015年5月16日03:55:00

 ----------------------------------------------------------------------------- | A | B | C | D | E | |-----------------------------------------------------------|---------------| | 12:55:00 | 21 | 02:44:40 | 03:57:30 | 16/05/2015 | ----------------------------------------------------------------------------- 

对于数字我使用下面的公式,但不知道如何在时间的情况下实现

 =INDEX(A1:A20,MATCH(MIN(ABS(A1:A20-D1)),ABS(A1:A20-D1),0)) 

谢谢

如果我们假设你的date是从不同的日子进入的,但是你想把它们看作是在同一天,那么你只需要在进行比较之前减去那几天。

由于Excel将date存储为小数点表示小时/秒的date,因此可以简单地减去该值的整数部分。

这是公式。 这是一个数组公式,用CTRL + SHIFT + ENTERinput。

 =INDEX(A1:A20,MATCH(MIN(ABS(A1:A20-INT(A1:A20)-D1+INT(D1))),ABS(A1:A20-INT(A1:A20)-D1+INT(D1)),0)) 

对于A1:A20我们减去INT(A1:A20) 。 除D1之外的D1也是相同的东西,所以INT部分被加回来了。

感谢Byron,基于你的解决scheme,得到了一个想法和实现,并实现了所需的输出见下面我的解决scheme

Sheet1将单元格A1的值转换为数字格式在单元格B1中input

  =(A1-INT(A1))*24 

在Sheet2中,将单元格B转换为数字格式 – >单元格D

 ---------------------------------------------------------- | A | B | C | D | |--------------------------------------------------------- | 1 | 07:36:00 | 08:23:10 | 7.6 | forumla "=(B12-INT(B12))*24" | 2 | 08:23:10 | 09:10:20 | 8.386111111 | | 3 | 09:10:20 | 09:57:30 | 9.172222222 | | 4 | 09:57:30 | 10:44:40 | 9.958333333 | | 5 | 10:44:40 | 11:31:50 | 10.74444444 | | 6 | 11:31:50 | 12:19:00 | 11.53055556 | | 7 | 12:19:00 | 13:06:10 | 12.31666667 | | 8 | 13:06:10 | 13:53:20 | 13.10277778 | | 9 | 13:53:20 | 14:40:30 | 13.88888889 | | 10 | 14:40:30 | 15:27:40 | 14.675 | | 11 | 15:27:40 | 16:14:50 | 15.46111111 | | 12 | 16:14:50 | 17:02:00 | 16.24722222 | | 13 | 17:02:00 | 18:14:50 | 17.03333333 | | 14 | 18:14:50 | 19:27:40 | 18.24722222 | | 15 | 19:27:40 | 20:40:30 | 19.46111111 | | 16 | 20:40:30 | 21:53:20 | 20.675 | | 17 | 21:53:20 | 23:06:10 | 21.88888889 | | 18 | 23:06:10 | 00:19:00 | 23.10277778 | | 19 | 00:19:00 | 01:31:50 | 0.316666667 | | 20 | 01:31:50 | 02:44:40 | 1.530555556 | | 21 | 02:44:40 | 03:57:30 | 2.744444444 | | 22 | 03:57:30 | 05:10:20 | 3.958333333 | | 23 | 05:10:20 | 06:23:10 | 5.172222222 | | 24 | 06:23:10 | 07:36:00 | 6.386111111 | --------------------------------------------------------- 

现在Sheet1 C1进入数组forumla(shift + Ctrl + Enter)

 =INDEX(Sheet2!A12:A35,MATCH(MIN(ABS(Sheet2!D12:D35-Sheet1!B1)),ABS(Sheet2!D12:D35-Sheet1!B1),0)) 

Sheet1 D1

 =VLOOKUP(B3,Sheet2!A12:C35,2,FALSE) 

Sheet1 E1

 =VLOOKUP(B3,Sheet2!A12:C35,3,FALSE) 

在Sheet1中输出

 ------------------------------------------------------------------------------------ | A | B | C | D | E | |-------------------------------------------------------------------|---------------| | 07:36:58 | 7.615991667 | 1 | 07:36:00 | 08:23:10 | ------------------------------------------------------------------------------------- 

谢谢