Excel多条件匹配折扣:基于客户ID与年度销售额获取对应折扣
基于客户ID和销售额区间匹配折扣的解决方法
方法1:INDEX + MATCH(兼容多数Excel版本)
假设Table1的客户ID在A2,年度销售额在B2;Table2的客户ID列是E2:E100,区间起始列F2:F100,区间结束列G2:G100,折扣列H2:H100,使用以下公式:
=INDEX($H$2:$H$100, MATCH(1, ($E$2:$E$100=A2)*($F$2:$F$100<=B2)*($G$2:$G$100>=B2), 0))
- 非Excel 365/2021版本:输入公式后需按
Ctrl+Shift+Enter作为数组公式生效 - 逻辑:通过三个条件的乘积生成匹配标记(符合条件的位置值为1),MATCH定位第一个匹配项的位置,INDEX返回对应折扣值
方法2:XLOOKUP(仅Excel 365/2021及以上版本)
利用XLOOKUP的多条件匹配能力,写法更简洁:
=XLOOKUP(1, ($E$2:$E$100=A2)*($F$2:$F$100<=B2)*($G$2:$G$100>=B2), $H$2:$H$100, "无匹配")
- 最后一个参数
"无匹配"可替换为你需要的默认值(比如0或空文本"")
方法3:FILTER + XLOOKUP(动态数组版本)
先筛选出当前客户的所有区间规则,再通过近似匹配找到对应折扣(要求每个客户的区间起始列From为升序排列):
=XLOOKUP(B2, FILTER($F$2:$F$100, $E$2:$E$100=A2), FILTER($H$2:$H$100, $E$2:$E$100=A2), "无匹配", 1)
- 参数
1表示启用近似匹配,和你之前使用的VLOOKUP(...,TRUE)逻辑一致
注意事项
- 确保Table2中每个客户的销售额区间无重叠、连续覆盖,避免出现多个匹配结果导致公式返回错误
- 若要处理销售额超出所有区间的情况,可用
IFERROR包裹公式,例如:=IFERROR(INDEX(...), 0)
内容的提问来源于stack exchange,提问作者Hubert S
相关产品推荐
相关产品推荐

