Excel:匹配date范围内最近的date

我试图显示其包含date的单元格列的标题是特定单元格(A2)中最接近(从其他3个单元格date,B2:D2)

所以这是我的工作表:

ABCD 1 | T1 | T2 | T3 | T4 | 2 | 5/1/2013 | 5/31/2013 | 2/5/2013 | 3/2/2013 | A2 = a date. B2:D2 = 3 dates, can also be blank 

我已经尝试使用我在网上find的以下数组公式:

 =IF(COUNT($B2:$D2)>0,INDEX($B$1:$D$1,MATCH(MIN(ABS($B2:$D2-$A2)),ABS($B2:$D2-$A2),0)),"") 

但有时候,只有一两个date,它给了我错误的标题。 我也想避免使用数组公式,但不能将其转换为常规的公式。

将非常感谢在这个问题上的援助

你可以给一个实例你正在使用的数组公式是不工作? 它适用于我尝试的情况。

如果准备在date和date单元格A2中有不同的行,则可以避免使用数组公式。

将行向下推一行,以便标题位于第2行和第3行的date,并在第1行中input以下公式,从单元格B1开始

 =ABS(B3-$A$3) 

拖动这个,然后input下面的HLOOKUP来获得你的标题行

 =HLOOKUP(MIN(B1:D1),B1:D3,2,FALSE) 

如果由于某种原因您无法将行向下移动,则可以使用MATCH和INDEX(较慢)的组合。 如果你在第7行放置差异函数= ABS(B2- $ A $ 2),那么公式就是

 =INDEX(B1:D1,1,MATCH(MIN(B7:D7),B7:D7,0)) 

好的,答案相当简单。

我回到工作表来调查发生这种情况的情况。 看来,当A2是空的(=没有date进行比较)它只是给出了从B2:D2可用的唯一date。

通过简单地添加另一个条件到IF声明只有A2有一个值解决了问题才会工作。 所以我们正在检查A2和B2:D2是否有值(B2:D2需要至less有一个:

 =IF(AND(COUNT($B2:$D2)>0,$A2>0),......) 

这里是完整的公式

 =IF(AND(COUNT($B2:$D2)>0,$A2>0),INDEX($B$1:$D$1,MATCH(MIN(ABS($B2:$D2-$A2)),ABS($B2:$D2-$A2),0)),"") 

感谢让我回到调查! :d

对于非数组的替代方法,可以尝试:

 =LOOKUP(2,1/FREQUENCY(0,ABS(B2:D2-A2)),B$1:D$1) 

代替公式的INDEX(...)部分。