获取与 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
在 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