4个变量索引函数,大于和小于2个变量

时间:2016-06-08 08:34:14

标签: excel indexing match

我正在尝试使用索引匹配函数来确定下表的适当速率。

因此,例如,对于拥有房产的人来说,消费者贷款的年龄为2年或更短,贷款与价值比率低于140%应该返回5.15%

Table

2 个答案:

答案 0 :(得分:0)

Example

我相信这就是你想要的......

我会使用一系列嵌套的if函数来评估我希望该值来自哪一列LTV。

"这是在AND()部分中完成的。如果该值大于110%且小于140%,请在110%列上进行索引匹配,否则在140%列上进行。"

您可以将此扩展为更多具有错误条件的IF的列。

然后它是一个简单的INDEX匹配连接。它搜索在单个连接范围内连接的三个参数。

希望它有所帮助。

答案 1 :(得分:0)

概念证明

Proof of Concept

为了实现上述目标,我必须对您的标题进行一次小修改,以便能够区分两个140%的列。

本答案中使用的函数是:

我将公式的主要部分放在IFERROR函数中,作为处理可能超出范围或未提供所有输入的事物的方法。然后我假设你的搜索基础是在一系列单元格中提供的。在我的例子中,我假设问题将在H3到K3的范围内被提出,我将结果放在L3中。

主要概念以INDEX功能为中心。我将索引范围指定为表的高度和百分比的宽度。或者对于这个例子D2:F9。

=IFERROR(INDEX($D$2:$F$9,row number, column number),"Not Found")

这很容易。更具挑战性的部分是确定要查看的行和列号。让我们从列号开始,因为这两者稍微容易一些。我假设要寻找的比率,或者更确切地说,将提供要查看的列的标题。我基本上用这个等式来确定列号:

=MATCH(K3,$D$1:$F$1,0)

以外行人的术语表示D和F之间的哪一列,将D列计为1,其值等于K3的内容。现在有一个确定列的公式,我们可以将其放入我们的原始公式中并结束:

=IFERROR(INDEX($D$2:$F$9,row number,MATCH(K3,$D$1:$F$1,0)),"Not Found")

现在我们只需要确定行号。这是最复杂的操作。我们将基本上进行一系列逻辑检查,并获取匹配所有逻辑检查的第一行。这里的前提是逻辑检查是TRUE或FALSE。在excel 0中,false为每隔一个整数为TRUE。因此,如果我们将一系列逻辑检查相乘,只有在所有情况下都为真的那一个将等于1.第一个逻辑检查是贷款类型。然后是生活状态,然后是车龄。

=(H3=$A$2:$A$9)*(I3=$B$2:$B$9)*(J3=C2:C9)

现在,如果你将它放入数组公式中,你将得到一系列真假或1/0。我们将在具有特殊功能的AGGREGATE函数中使用它。 AGGREGATE函数将执行某些函数的数组计算。我们将使用将执行此操作的功能15。我们也将告诉聚合函数忽略所有错误,这就是6所做的。因此,最后我们要做的是将每个行号除以逻辑检查。如果逻辑检查为假或0,它将生成Div / 0!聚合将选择忽略的错误。最后,我们得到一个与我们的逻辑检查匹配的行列表。然后我们告诉聚合我们想要第一个结果,1。所以我们最终得到一个看似如下的公式:

=AGGREGATE(15,6,ROW($A$2:$A$9)/((H3=$A$2:$A$9)*(I3=$B$2:$B$9)*(J3=C2:C9)),1)

虽然这确实为我们提供了我们想要的行号,但我们需要调整它以使其成为索引号。为此,您需要减去标题行的数量。在这种情况下1.因此索引行号由以下公式给出:

=AGGREGATE(15,6,ROW($A$2:$A$9)/((H3=$A$2:$A$9)*(I3=$B$2:$B$9)*(J3=C2:C9)),1)-1

当我们将其替换为行号的早期等式时,我们最终得出以下等式:

=IFERROR(INDEX($D$2:$F$9,AGGREGATE(15,6,ROW($A$2:$A$9)/((H3=$A$2:$A$9)*(I3=$B$2:$B$9)*(J3=C2:C9)),1)-1,MATCH(K3,$D$1:$F$1,0)),"Not Found")