基于上下限列表匹配名称与数值,返回对应价格
按名称+数量区间匹配价格的Excel解决方案
需求说明
基于Sheet2中包含名称(Name)、下限(Lower Bound)、上限(Upper Bound)、**价格(Price)**的数据源,在Sheet1中根据每行的名称和数量,返回对应名称下数量落在上下限区间内的价格,支持数千条数据的高效计算。
适用公式方案
方案1:XLOOKUP函数(Excel 365/2021及以上版本)
公式简洁且支持动态数组,无需手动按组合键。假设Sheet1的价格列从C2单元格开始,C2的公式为:
=XLOOKUP(1,(Sheet2!$A$2:$A$10000=A2)*(Sheet2!$B$2:$B$10000<=B2)*(Sheet2!$C$2:$C$10000>=B2),Sheet2!$D$2:$D$10000,"无匹配")
- 说明:
(Sheet2!$A$2:$A$10000=A2)匹配相同名称,(Sheet2!$B$2:$B$10000<=B2)和(Sheet2!$C$2:$C$10000>=B2)确保数量落在区间内;三个条件相乘后,符合条件的行返回1,XLOOKUP定位第一个符合条件的行并返回对应价格;最后一个参数为无匹配时的提示文本,可按需修改。 - 优化:将
$A$2:$A$10000等范围替换为Sheet2中实际的数据范围(避免整列引用降低计算效率),下拉公式即可批量计算。
方案2:INDEX+MATCH组合(兼容所有Excel版本)
适用于不支持XLOOKUP的老版本Excel,公式为:
=INDEX(Sheet2!$D$2:$D$10000,MATCH(1,(Sheet2!$A$2:$A$10000=A2)*(Sheet2!$B$2:$B$10000<=B2)*(Sheet2!$C$2:$C$10000>=B2),0))
- 说明:MATCH函数定位同时满足三个条件的行号,INDEX函数根据行号返回对应价格;Excel 2019及以下版本输入公式后需按
Ctrl+Shift+Enter触发数组计算,Excel 365/2021可直接回车。
示例计算结果
按上述公式计算后,Sheet1的价格列结果如下:
| 名称(Name) | 数量(Quantity) | 价格(Price) |
|---|---|---|
| Apple | 5 | $10.00 |
| Apple | 11 | $29.50 |
| Apple | 23 | $28.20 |
| Grape | 9 | $22.10 |
| Grape | 27 | $35.20 |
| Grape | 40 | $35.20 |
内容的提问来源于stack exchange,提问作者Moo
相关产品推荐
相关产品推荐

