You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel如何查找与参考值最接近的前3个数值

Excel提取与参考值最接近的前N个数值解决方案

适用版本(Excel 365/2021及以上)

直接输入以下动态数组公式,会自动溢出前3个结果:

=TAKE(SORTBY('[外部文件名.xlsx]工作表名'!$数据区域,ABS('[外部文件名.xlsx]工作表名'!$数据区域-参考值),1),3)

示例适配你的场景

你的测试数据如果存在外部文件数值库.xlsx的Sheet1工作表A2:A10区域,参考值为30,公式写为:
=TAKE(SORTBY('[数值库.xlsx]Sheet1'!$A$2:$A$10,ABS('[数值库.xlsx]Sheet1'!$A$2:$A$10-30),1),3)

公式说明

  • 跨文件引用格式固定为'[文件名]工作表名'!单元格区域,外部文件关闭时可填写完整绝对路径,比如'C:\桌面\[数值库.xlsx]Sheet1'!$A$2:$A$10即可正常读取
  • 内层ABS(数据区域-参考值)计算每个数值和参考值的绝对差值,作为排序依据
  • SORTBY按差值升序排列,差值越小的数值越靠前
  • TAKE提取排序后的前3个结果,需要调整输出数量直接修改末尾的数字即可
  • 针对你的测试数据,公式输出结果为29、28、27,完全匹配预期

兼容旧版Excel(无SORTBY/TAKE函数)

在首个输出单元格输入以下数组公式,按Ctrl+Shift+Enter触发数组计算,之后下拉填充3行即可:
=INDEX('[数值库.xlsx]Sheet1'!$A$2:$A$10,SMALL(IF(ABS('[数值库.xlsx]Sheet1'!$A$2:$A$10-30)=SMALL(ABS('[数值库.xlsx]Sheet1'!$A$2:$A$10-30),ROW(A1)),ROW($1:$9),4^8),1))

注意事项

  • 公式中ROW($1:$9)对应数据区域的行数,你的测试数据共9行,数据量变化时同步调整即可
  • 4^8是远大于数据行数的容错值,可根据实际数据量调整

内容的提问来源于stack exchange,提问作者Edwin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 22:54:10