根据退休时间和级别返回对应的费用
问题:表一结构如下图,根据D3的退休时间2007年9月(实际为真日期“2007-9-1”),在2007年1月之后、2008年7月之前,返回数据应为2007年1月所在行;再根据级别为一级,返回对应的值。
函数公式解决:
=LOOKUP(D3,--LEFT(B7:B10,FIND("月",B7:B10)),OFFSET(B7:B10,,MATCH(E3,C6:E6,)))
利用Find函数找到B列中“月”字出现的位置,再利用Left函数,将“月”字以左的字符串全部提取出来,生成类似“2006年7月”这样的字符串。
Left函数前面加双负号(减负运算),将文本型的“2006年7月”强制转换为真日期“2006-7-1” 。
以此结果作为Lookup函数的第二参数,查找指定退休日期D3在其中对应的结果。
Lookup第三参数,利用Offset套Match,返回与级别一致的列,即E列的数据,作为公式最终返回的结果。
Offset以B7:B10为起点,向下不偏移,向右偏移的位置是E3在C6:E6这一行中对应的位置,以此返回指定级别所在列。