等级表中的近似匹配
使用已排序的 MATCH,在定价表或评分表中找到正确区间
等级表中的近似匹配 是 CoddyKit 上的免费 Excel Formulas Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Excel Formulas Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Excel Formulas Academy 课程共包含 4 节课。
什么是分级表?
分级表会将连续数值划分到不同区间中。例如,税率档位、按重量计算的运费、批量折扣,以及按分数划分的字母等级。
您不需要为每个可能的数值都设置一行,只需记录每个区间的起始阈值即可。分数 87 没有对应的精确条目,但它属于从 80 开始的区间。
这正是近似匹配发挥作用的地方:它会找到正确的区间,而不是要求精确命中。
精确匹配与近似匹配
到目前为止,我们使用 MATCH(value, range, 0) 进行精确匹配。第三个参数 0 表示“精确查找此值,否则返回 #N/A”。
对于分级查找,我们改用匹配类型 1。它会查找小于或等于查找值的最大值。这正是分区间查找应有的行为。
有一条必须遵守的规则:使用匹配类型 1 时,阈值列表必须按升序排列。
=MATCH(87, E2:E6, 1)设置区间
想象一张评分表。E 列存放按升序排列的最低阈值:0、60、70、80、90。F 列存放等级标签:F、D、C、B、A。
分数 0 到 59 为 F,60 到 69 为 D,依此类推。我们只存储每个区间的起点,而不是每个分数。
我们的目标是:给定 G1 中的分数,返回其字母等级。
查找区间位置
使用近似 MATCH 查找分数所属的区间。对于分数 87,MATCH(G1, E2:E6, 1) 会查找小于或等于 87 的最大阈值。
阈值为 0、60、70、80、90。不超过 87 的最大值是 80,它位于第 4 个位置。因此 MATCH 返回4。
即使列表中没有 87,这个位置仍然能指向正确的区间。
=MATCH(G1, E2:E6, 1)返回分级标签
现在,将这个位置用于标签列 F2:F6 中的 INDEX。
INDEX(F2:F6, MATCH(G1, E2:E6, 1)) 获取位置 4,并返回第四个标签“B”。
因此,分数 87 会正确映射到等级 B。将 G1 改为 95 时,MATCH 返回 5,结果为“A”;改为 55 时,MATCH 返回 1,结果为“F”。
=INDEX(F2:F6, MATCH(G1, E2:E6, 1))排序要求
近似 MATCH(类型 1)要求查找范围按升序排列。它假定数据不断增大,并在超过查找值时立即停止。
如果阈值顺序不正确,MATCH 可能过早停止并返回错误的位置,而且不会报错提醒您。依赖分级查找之前,请始终将阈值列从小到大排序。
=INDEX(F2:F6, MATCH(G1, E2:E6, 1))使用 XLOOKUP 完成相同操作
XLOOKUP 也可以进行近似匹配。它的第五个参数,即匹配模式,接受 -1,表示“精确匹配或下一个更小的项目”,非常适合分级表。
它会查找小于或等于 G1 的最大阈值,并返回相应标签,无需使用 INDEX。对于区间查找,它通常比 INDEX-MATCH 更易读。
=XLOOKUP(G1, E2:E6, F2:F6, "Out of range", -1)定价分级示例
现在来看一个批量折扣示例。E 列中的阈值(订购数量)为:0、10、50、100。F 列中的折扣为:0%、5%、10%、15%。
- 订购 7 件:不超过 7 的最大阈值是 0,位置为 1,返回 0%。
- 订购 60 件:不超过 60 的最大阈值是 50,位置为 3,返回 10%。
- 订购 200 件:不超过 200 的最大阈值是 100,位置为 4,返回 15%。
一个公式即可处理所有数量。
=INDEX(F2:F5, MATCH(G1, E2:E5, 1))处理低于第一个区间的值
如果某个值小于所有阈值,该怎么办?使用近似 MATCH 时,不存在小于或等于它的值,因此 MATCH 会返回#N/A。
为避免这种情况,请确保第一个阈值覆盖下限(通常为 0),或者使用 IFERROR 包裹公式,以便在输入超出范围时显示清晰的提示。
=IFERROR(INDEX(F2:F6, MATCH(G1, E2:E6, 1)), "Below lowest tier")常见错误
请留意分级表中的这些陷阱:
- 阈值未排序:产生错误但不提示的结果的首要原因。
- 使用匹配类型 0:这会强制进行精确匹配,任何处于两个阈值之间的值都会返回 #N/A。
- 存储区间终点而不是起点:类型 1 的 MATCH 需要每个区间的下限,而不是上限。
- 文本阈值:以文本形式存储的数字会导致比较失效;请确保它们是数值。
二维分级表
您可以将近似匹配与双向查找技术结合起来。想象一张同时按重量区间(行)和区域区间(列)计算运费的表。
使用一个近似 MATCH(类型 1)查找重量所在的行,再使用另一个查找区域所在的列,然后将两者传递给 INDEX。由于两个轴上的阈值都已排序,每个 MATCH 都会落在正确的区间中。
这种方法将 INDEX-MATCH-MATCH 与分级逻辑结合起来,可处理复杂的费率表。
=INDEX(B2:D6, MATCH(G1, A2:A6, 1), MATCH(G2, B1:D1, 1))快速检查
确认您对近似分级查找的理解。
课程回顾
进行分级和区间查找时:
- 存储每个区间的下限阈值,并按升序排列。
- 使用
MATCH(value, thresholds, 1)查找区间位置(小于或等于输入值的最大值)。 - 使用
INDEX(labels, ...)包裹它以返回区间标签,或者使用XLOOKUP(..., -1)得到相同结果。
使用 0 阈值覆盖下限,或使用 IFERROR 处理超出范围的输入;绝不要让阈值保持未排序状态。
=INDEX(F2:F6, MATCH(G1, E2:E6, 1))常见问题解答
「等级表中的近似匹配」课时是免费的吗?
是的 — 「等级表中的近似匹配」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Excel Formulas Academy 课程的其余内容,请升级到 CoddyKit PRO。 Excel Formulas Academy 课程共包含 4 节课。
「等级表中的近似匹配」这节课中我会学到什么?
使用已排序的 MATCH,在定价表或评分表中找到正确区间 你通过在浏览器中直接运行的动手代码来练习 Excel Formulas Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Excel Formulas Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Excel Formulas Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「等级表中的近似匹配」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Excel Formulas Academy 课中编写并运行代码吗?
能。每节 Excel Formulas Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。