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(...)
部分。