excel里用vlookup查找最接近目标日期的方法
答案:4 悬赏:60
解决时间 2021-01-29 00:36
- 提问者网友:我的未来我做主
- 2021-01-28 09:08
excel里用vlookup查找最接近目标日期的方法
最佳答案
- 二级知识专家网友:患得患失的劫
- 2021-01-28 09:41
把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 了。
我把文件传上来,请点击这回答右下角绿色的“点击下载”按钮,下载文件看看效果。
=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 了。
我把文件传上来,请点击这回答右下角绿色的“点击下载”按钮,下载文件看看效果。
全部回答
- 1楼网友:woshuo
- 2021-01-28 11:06
如果 range_lookup 为 TRUE 或被省略,则返回精确匹配值或近似匹配值。
如果找不到精确匹配值,则返回小于 lookup_value 的最大值。 在A2:B4中没有精确配值,返回小于2001/10/30的最大值就是2001/10/1对应的值1,公式返回的值没有错.
如果找不到精确匹配值,则返回小于 lookup_value 的最大值。 在A2:B4中没有精确配值,返回小于2001/10/30的最大值就是2001/10/1对应的值1,公式返回的值没有错.
- 2楼网友:深街酒徒
- 2021-01-28 10:04
=OFFSET($A$2,MATCH(SMALL(ABS(F2-OFFSET($A$2,,,COUNTA(A:A)-1,1)),1),ABS(F2-OFFSET($A$2,,,COUNTA(A:A)-1,1)),0)-1,1) 数组公式
- 3楼网友:旧脸谱
- 2021-01-28 09:50
=INDIRECT("B"&MATCH(MIN(ABS($A$2:$A$4-F2)),ABS($A$2:$A$4-F2),)+1)&""
同时按CTRL SHIFT 回车键
下拉
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯