Excel - 使用INDEX()获取大于值?

时间:2016-08-05 08:05:21

标签: excel excel-formula excel-2010

我当前的电子表格如下所示:

enter image description here

单位成本:单个项目的一次性费用。

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)。

这在最初很有用,并且相当简单和优雅,但是有新的场景它不会工作。

在新方案中,仅当卷 大于 一个数字时才应用成本乘数。

enter image description here

即。音量为2将返回第一列'1',但音量为2.0001将返回第二列'0.9'。

我真的不确定无论如何我都可以调整我现有的公式以促进这一点,我现在唯一能采取的另一种方法是使用一个巨大的嵌套if语句。

几点:

  • 卷可以是非整数
  • 只有6个成本乘数类别/阈值。

3 个答案:

答案 0 :(得分:2)

你需要的只是MATCH,第三个参数设置为1,只要你将E9:I9改回数字(不带“>”)。

=IF(K10=0,0,IF(K10>=6,D10*K10*J10,D10*K10*INDEX(E10:J10,MATCH(K10,E9:J9,1))))

答案 1 :(得分:1)

我知道这并不完全是"使用INDEX()来实现大于值"。

但是,我认为这段代码应该适用于你的情况。

=IF(K10<=1,L10,IF(K10 > 6,D10*K10*J10,D10*K10*INDEX(E10:J10,K10-0.000001)))

答案 2 :(得分:0)

它可能让你的头部旋转一点,但这是一种没有IF功能的方法。它是一个数组函数,因此在将其键入单元格J2后,您必须按CTRL SHIFT ENTER。

=$I2*IFERROR(1/MAX(($H2>$B1:$G1)/$B2:$G2),1)

enter image description here