EP11. “Closest Match 查找最接近的值”
🔒 登录后可标记已读- 讲怎么在一列数据里找出跟目标值「最接近」的那一个(不管是偏大还是偏小)
- 用 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 |
操作步骤
- 用 ABS 算出目标值跟某一项的差距:比如
C3-F2结果是 -39,用 ABS 把负号去掉变成 39。对本来就是零或正数的差距,ABS 不影响结果。 - 把单一单元格换成整个范围,生成差距数组:把公式里的 C3 换成 C3:C9,生成一个数组常量,比如
{39;14;37;16;22;16;17}——这个数组只存在 Excel 内存里,不会写进实际单元格。 - 用 MIN 找出最小的差距值:
=MIN(ABS(C3:C9-F2))
按 Ctrl + Shift + Enter 确认成数组公式(公式栏出现花括号 {}),结果是 14(表示最接近的那一项跟目标值只差 14)。
- 用 MATCH 找出这个最小差距在数组中的位置:
=MATCH(14,ABS(C3:C9-F2),0)
第一参数是找到的最小差距(14),第二参数是差距数组,第三参数设 0 做精确匹配,结果返回位置 2。
- 用 INDEX 取出对应位置的名称:
=INDEX(B3:B9,2)
从名称范围 B3:B9 里取第 2 个位置的值,也就是最接近目标值的那个人/项目的名称。
- 组合成完整公式:
=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: