获取与 excel 中的日期值匹配的列索引

Get column index matching the date value in excel

在 screenshot/formula 下方,我试图将 E 列中的日期值与 B 列中的另一个日期范围列相匹配。 如果找到,则 return 列 D 的匹配值。

FORMULA: ==LOOKUP(E3,$A:$B,$C:$C)

Current Output:

FROM    TO      AGE(Years)  INPUT   OUTPUT
7/4/65  10/4/65 0.25        7/4/68  0.25

Expected Output:

FROM    TO      AGE(Years)  INPUT   OUTPUT
7/4/65  10/4/65 0.25        1/4/68  **2.75**

注意:我使用的是 EXCEL 2003!!!

你必须用index/match得到D列对应E列匹配位置的值:

=IFERROR(INDEX(D:D,MATCH(E3,$B:$B,0)),"No")

但是,根据 this Iferror 直到 Excel 2007 年才可用,因此您必须使用 Iserror 或 Isna:

=IF(ISNA(MATCH(D3,$B:$B,0)),"No",INDEX(C:C,MATCH(D3,$B:$B,0)))

对于日期范围

如果您决定使用 Vlookup:

=VLOOKUP(D3,A:C,3,TRUE)

或者 Lookup 的两个版本:

=LOOKUP(D3,A:C)

=LOOKUP(D3,A:A,C:C)

都给出相同的结果。

请注意,我正在对 A 列进行查找,但它不会给出与对 B 列进行精确查找相同的答案。这是因为不清楚 10/4/65(例如)是否应该产生.25 或 .5,因为两者都是可能的,因为 10/4/65 是一个范围的结束和另一个范围的开始,我选择了第二个。


额外挑战

如果不进行查找并仅使用 Excel 2003 函数,这样做是否相当容易?

是的。如果 A1 包含基线日期(可能是出生日期)4/4/65,它将如下所示:

=YEAR(D3)-YEAR(A)+INT((MONTH(D3)-MONTH(A)-(DAY(D3)<DAY(A)))/3)/4