Excel:匹配日期范围内最接近的日期

时间:2013-06-08 22:02:30

标签: excel formula

我正在尝试显示列的标题,其包含日期的单元格与特定单元格(A2)中最接近(其中3个具有日期的单元格,B2:D2)

所以这是我的表:

       A           B          C          D
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

我尝试过使用我在网上找到的以下数组公式:

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

但有时当只有一两个日期时,它会给我错误的标题。我还想避免使用数组公式,但无法将其转换为常规公式。

非常感谢对此事的协助

3 个答案:

答案 0 :(得分:2)

你能给一个实例你使用的数组公式是不行的吗?它适用于我尝试过的案例。

如果您准备在日期和日期单元格A2中添加另一行,则可以避免使用数组公式。

将您的行向下推一行,因此标题位于第2行,第3行的日期在第1行输入以下公式,从第B1行开始

=ABS(B3-$A$3)

将其拖过并输入以下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))

答案 1 :(得分:1)

好的,答案很简单。

我回到表格来调查发生这种情况的情景。 似乎当 A2 为空(=没有进行比较的日期)时,它只显示 B2:D2 中唯一可用的日期。

通过简单地向IF声明添加另一个条件,只有当A2有一个值解决了问题时才会起作用。所以我们检查A2和B2:D2是否都有值(B2:D2需要至少有一个:

=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

答案 2 :(得分:1)

对于非阵列替代方案,您可以尝试:

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

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