Excel技术需求:按条件取多列最小值并与数量列相乘(无新列)
Excel 无新增列计算符合条件行的最小价格×数量总和
需求说明
- 不允许新建辅助列
- 表格会向下扩展,公式需支持动态范围
- 仅计算「条件」列为
YES的行:取该行所有价格列的最小值 × 对应「数量」,最后求和 - 使用的Excel版本不支持
SEQUENCE函数
原始数据
| 数量 | 条件 | 列1 | 价格 | 列2 | 价格 | 列3 | 价格 | 列4 | 价格 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | YES | Material 1 | $100,00 | Material 1 | $90,00 | Material 1 | $75,00 | Material 1 | $100,00 |
| 2 | YES | Material 2 | $120,00 | Material 2 | $150,00 | Material 2 | $220,00 | Material 2 | $210,00 |
| 1 | YES | Material 3 | $140,00 | Material 3 | $140,00 | Material 3 | $145,00 | Material 3 | $130,00 |
| 4 | NO | Material 4 | $150,00 | Material 4 | $90,00 | Material 4 | $80,00 | Material 4 | $80,00 |
| 2 | NO | Material 5 | $90,00 | Material 5 | $60,00 | Material 5 | $55,00 | Material 5 | $56,00 |
| 1 | NO | Material 6 | $15,00 | Material 6 | $15,00 | Material 6 | $20,00 | Material 6 | $10,00 |
| 3 | YES | Material 7 | $150,00 | Material 7 | $200,00 | Material 7 | $180,00 | Material 7 | $90,00 |
解决方案公式
=SUMPRODUCT((B2:B1000="YES")*A2:A1000*MIN(INDEX(D2:J1000,ROW(A2:A1000)-ROW(A2)+1,{1,3,5,7})))
公式解释
(B2:B1000="YES"):筛选出「条件」列为YES的行,符合条件返回1,否则返回0A2:A1000:对应行的「数量」值MIN(INDEX(D2:J1000,ROW(A2:A1000)-ROW(A2)+1,{1,3,5,7})):对每行提取D、F、H、J列(所有价格列)的数值,再取最小值SUMPRODUCT:将三个数组对应元素相乘后求和,不符合条件的行因乘数为0,不会计入总和
注意事项
- 公式中使用的范围
B2:B1000、A2:A1000、D2:J1000可根据实际需求调整为更大的范围,确保表格向下扩展时数据能被覆盖 - 该公式兼容不支持
SEQUENCE函数的旧版Excel
预期计算结果
(1*75) + (2*120) + (1*130) + (3*90) = 715
内容的提问来源于stack exchange,提问作者Seigneur
相关产品推荐
相关产品推荐

