Excel – 使用INDEX()大于值?
我目前的电子表格是这样的:
单位成本 :单个项目的一次性成本。
1-6 :根据所需数量的成本乘数。
体积 :项目数量。
基本成本 :=(单位成本*成交量)
降低成本 :=(单位成本*成本*成本倍数)
在我目前降低成本的单元格中的公式如下所示:
=IF(K10=0,0,IF(K10 >= 6,D10*K10*J10,D10*K10*INDEX(E10:J10,1,K10)))
K10 :音量栏
D10 :单位成本栏
E10:J10 :1-6列
因此,如果音量不是0或不大于6,则通过使用音量值作为列索引来获得成本乘数。
例如,音量为3将返回第三列(0.85)。
这工作起初很好,而且相当简单和优雅,但有新的情况下,它不会工作。
在新的情况下,成本乘数只适用于数量大于数量的情况。
IE音量为2会返回第一列'1',但音量为2.0001会返回第二列'0.9'。
我真的不确定是否可以调整我的存在公式来促进这一点,我现在唯一可以采取的唯一方法是嵌套的if语句。
几点:
- 卷可以是非整数
- 将只有6个成本乘数类别/门槛。
我知道这不是完全“使用INDEX()大于值”。
但是,我认为这个代码应该适用于你的情况。
=IF(K10<=1,L10,IF(K10 > 6,D10*K10*J10,D10*K10*INDEX(E10:J10,K10-0.000001)))
所有你需要的是第三个参数设置为1的MATCH
,只要你改变E9:I9回到数字(没有“>”)。
=IF(K10=0,0,IF(K10>=6,D10*K10*J10,D10*K10*INDEX(E10:J10,MATCH(K10,E9:J9,1))))
这可能会使你的头脑旋转一些,但是这是一个没有IFfunction的方法。 这是一个数组函数,所以在键入到单元格J2中后,必须按CTRL SHIFT ENTER。
=$I2*IFERROR(1/MAX(($H2>$B1:$G1)/$B2:$G2),1)