MICROSOFT

EP11. “Closest Match 查找最接近的值”

首页 Microsoft 工具 Excel · Functions · Lookup & Reference · EP11
约 4 分钟· #EP11#Excel#Lookup & Reference
🔒 登录后可标记已读
  • 讲怎么在一列数据里找出跟目标值「最接近」的那一个(不管是偏大还是偏小)
  • 用 INDEX、MATCH、ABS、MIN 四个函数组合
  • 前置知识需要先看过 EP03 的 INDEX+MATCH
  • 学完能处理「没有精确匹配、只要最接近的」这类模糊查找需求

重点内容


函数速查

函数语法用途例子
ABS=ABS(number)返回数字的绝对值(去掉负号)=ABS(-39) → 39
MIN=MIN(range)返回范围内最小值=MIN({39;14;37;16;22;16;17}) → 14

操作步骤

  1. 用 ABS 算出目标值跟某一项的差距:比如 C3-F2 结果是 -39,用 ABS 把负号去掉变成 39。对本来就是零或正数的差距,ABS 不影响结果。
  2. 把单一单元格换成整个范围,生成差距数组:把公式里的 C3 换成 C3:C9,生成一个数组常量,比如 {39;14;37;16;22;16;17}——这个数组只存在 Excel 内存里,不会写进实际单元格。
  3. 用 MIN 找出最小的差距值

=MIN(ABS(C3:C9-F2))

Ctrl + Shift + Enter 确认成数组公式(公式栏出现花括号 {}),结果是 14(表示最接近的那一项跟目标值只差 14)。

  1. 用 MATCH 找出这个最小差距在数组中的位置

=MATCH(14,ABS(C3:C9-F2),0)

第一参数是找到的最小差距(14),第二参数是差距数组,第三参数设 0 做精确匹配,结果返回位置 2。

  1. 用 INDEX 取出对应位置的名称

=INDEX(B3:B9,2)

从名称范围 B3:B9 里取第 2 个位置的值,也就是最接近目标值的那个人/项目的名称。

  1. 组合成完整公式

=INDEX(B3:B9,MATCH(MIN(ABS(C3:C9-F2)),ABS(C3:C9-F2),0))

Excel 365 / 2021 版本直接按 Enter 即可(靠动态数组自动计算);旧版本需要按 Ctrl + Shift + Enter 确认成数组公式。

[截图:名称/数值范围(B3:C9)和目标值 F2 的示例表格,标出算出的差距数组和最终定位到的最接近项]


学完你会

  • ✅ 能用 ABS 算出目标值跟一整个范围的绝对差距
  • ✅ 能用 MIN 找出这些差距里最小的一个
  • ✅ 能组合 INDEX+MATCH+MIN+ABS,直接取出最接近目标值的那一项

常见错误

  • 忘记按 Ctrl + Shift + Enter(旧版本),导致数组运算只处理了第一个值,MIN/MATCH 结果不对
  • 差距数组里如果有并列最小值(两项跟目标值差距相同),MATCH 只会返回第一个出现的位置,不会同时列出两者
  • 把 ABS 漏掉直接用 MIN 找差距,负数差距会被误判成"更小",找出来的其实是偏差最大的负值而不是绝对差距最小的项

Sources

Blog / Website:

  1. Closest Match