把G2公式改为这样就行:
=IF(F2="","",INDEX(B:B,MATCH(1=1,MIN(ABS(F2-A$2:A$4))=ABS(F2-A$2:A$4),)+1))
或者用这公式也行:
=IF(F2="","",LOOKUP(1,0/(MIN(ABS(F2-A$2:A$4))=ABS(F2-A$2:A$4)),B$2:B$4))
如果需要对比更大的范围,如A2:B1000,公式改为这样就行:
=IF(F2="","",INDEX(B:B,MATCH(1=1,MIN(ABS(F2-A$2:A$1000))=ABS(F2-A$2:A$1000),)+1))
以上的公式是数组公式,输入完成后不要直接回车,要按三键 CTRL+SHIFT+回车 结束。
原来提问中的公式,用的是VLOOKUP的糊模查找方式,它的规则是查找最接近当前值且比当前值小的一个数值为返回的结果,而提问中的2001-11-1虽然最接近2001-10-30,但却是比2001-10-30大,所以是不会返回想要的结果的。
只有2001-10-1是同时符合比2001-10-30小,又是最接近的值,所以提问的公式就返回对应的B列结果 1 了。
我把文件传上来,请点击这回答右下角绿色的“点击下载”按钮,下载文件看看效果。