Excel 2019查找最匹配值问题:公式返回结果不符预期
解决Excel 2019最接近值匹配问题
问题原因
你使用的=INDEX(B1:F1,MATCH(B4,B2:F2,1))公式中,MATCH的第三个参数1要求查找区域必须升序排列,否则会返回小于等于查找值的最大元素位置(而非最接近值),这就是为什么得到1928而非预期的1930。另外,Excel不会强制对非升序区域返回#N/A,只会返回不可靠的匹配结果。
解决方案(无需XLOOKUP,适配Excel 2019)
方法1:数组公式(推荐)
直接用INDEX+MATCH+MIN+ABS组合,无需修改原始数据排列,支持批量数据:
=INDEX(B1:F1,MATCH(MIN(ABS(B2:F2-B4)),ABS(B2:F2-B4),0))
注意:Excel 2019中输入此公式后,需要按Ctrl+Shift+Enter完成数组公式录入(365及以后版本无需此操作)。
公式逻辑:
ABS(B2:F2-B4):计算每个数值与B4(12)的绝对差值MIN(...):找出所有差值中的最小值MATCH(...,0):定位最小差值在数组中的第一个出现位置INDEX(B1:F1,...):根据位置返回对应年份
方法2:非数组公式(适合不习惯数组快捷键的场景)
用SUMPRODUCT替代MATCH定位,避免快捷键操作:
=INDEX(B1:F1,SUMPRODUCT((ABS(B2:F2-B4)=MIN(ABS(B2:F2-B4)))*COLUMN(B2:F2))-COLUMN(B2)+1)
注意:如果存在多个与查找值差值相同的元素,此公式会返回所有匹配列号的和,导致结果错误,此时优先用方法1。
关于排序的补充
如果一定要使用MATCH的1参数,需将年份与对应值整区域排序:选中B1:F2区域,点击「数据」选项卡的「排序」,设置排序依据为B2:F2(数值列)、次序为升序,这样年份和数值的关联不会丢失,但会改变原始数据的排列顺序,对于大数量级数据不如上述函数方法灵活。
内容的提问来源于stack exchange,提问作者user17856705
相关产品推荐
相关产品推荐

