概念证明
为了实现上述目的,我必须对您的标题进行小幅编辑,以便能够区分两个 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 为假,每隔一个整数为真。因此,如果我们将一系列逻辑检查相乘,只有在所有情况下都为真的那个才会等于 1。第一个逻辑检查是贷款类型。其次是生活状况,然后是车龄。
=(H3=$A$2:$A$9)*(I3=$B$2:$B$9)*(J3=C2:C9)
现在,如果您将其放入数组公式中,您将得到一系列真假或 1/0。我们将在具有特殊功能的 AGGREGATE 函数中使用它。 AGGREGATE 函数将对其某些函数执行类似数组的计算。我们将使用函数 15 来执行此操作。我们还将告诉聚合函数忽略所有错误,这就是 6 所做的。所以最后我们要做的是将每个行号除以逻辑检查。如果逻辑检查为 false 或 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")