1

我正在尝试显示其包含日期的单元格最接近特定单元格(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)),"")

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

非常感谢您就此事提供帮助

4

3 回答 3

2

如果您使用的数组公式不起作用,您能举个例子吗?它适用于我尝试过的案例。

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

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

=ABS(B3-$A$3)

将其拖过并输入以下 HLOOKUP 以获取标题行

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

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

=INDEX(B1:D1,1,MATCH(MIN(B7:D7),B7:D7,0))
于 2013-06-08T22:58:04.650 回答
1

对于非数组替代方案,您可以尝试:

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

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

于 2013-06-09T15:34:47.680 回答
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

于 2013-06-09T04:58:01.910 回答