如何用函数实现可变行内非零货物重量与对应等级成本的匹配?
解决方案
假设你的货物重量数据在一行(示例为A1:G1),成本数据在一列(示例为I1:I3),以下是实现匹配逻辑的函数方案(适用于Excel 365/2021及以上版本,支持动态数组):
1. 提取并升序排列非零重量
在任意空白单元格输入以下公式,会自动返回所有非零重量的升序数组:
=SORT(FILTER(A1:G1, A1:G1 <> 0), 1, 1)
示例中会返回 {6, 8, 9, 9},对应从最小到最大的非零重量。
2. 关联排序后的成本与重量
若要直接将升序成本和对应升序非零重量配对展示,使用以下公式生成两列结果:
=HSTACK(SORT(I1:I3, 1, 1), SORT(FILTER(A1:G1, A1:G1 <> 0), 1, 1))
执行后会得到:
| 升序成本 | 对应重量 |
|---|---|
| 3595.11 | 6 |
| 4437.08 | 8 |
| 4939.34 | 9 |
3. 单独在重量行下方逐个返回匹配值
如果要在重量行的下一行(比如A2:G2)依次对应最小、中等、最大成本的重量,在A2输入公式后下拉:
=SMALL(FILTER($A$1:$G$1, $A$1:$G$1 <> 0), ROWS($A$2:A2))
A2返回最小非零重量(对应最小成本)B2返回次小非零重量(对应中等成本)- 以此类推,直到覆盖所有成本数量
容错优化
若成本数量多于非零重量数量,公式会返回#NUM!错误,可添加容错逻辑返回空值:
=IFERROR(SMALL(FILTER($A$1:$G$1, $A$1:$G$1 <> 0), ROWS($A$2:A2)), "")
所有公式会随原始数据动态更新,无需手动调整。
内容的提问来源于stack exchange,提问作者FarideAb
相关产品推荐
相关产品推荐

