我正在尝试显示列的标题,其包含日期的单元格与特定单元格(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)),"")
但有时当只有一两个日期时,它会给我错误的标题。我还想避免使用数组公式,但无法将其转换为常规公式。
非常感谢对此事的协助
答案 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(...)
部分。