嵌套IFs Excel - 替代

时间:2017-10-04 13:58:42

标签: excel if-statement nested

我有一个包含多列的大型数据集 - 每行都有一个案例类型和一个契约值。在另一张表格中,我有一个案例类型和值范围的映射表(如下所示),用于决定" Type"每行也应该分配。

例如,一个案例类型为1且合同价值为$ 20,000,000的行将是类型1 - 一个案例类型为3且值为$ 4,000,000的行将是类型3,因为它属于类型3的值范围(N4和O4)

我知道我可以在14个辅助列中对IF语句进行硬编码,以满足每个案例类型,然后组合不是空白的单元格,但我很想知道有更聪明的方法吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

首先,需要调整映射表数据集的标题。取消合并已合并的单元格,然后为每列添加标题。这样做应该会产生类似的结果:

example of header


然后我在第二个工作表上创建了一个结果表,如下所示:

results table


它可能过于简单,但希望您可以根据需要修改公式。

现在这是我在C2中创建的公式:

{=INDEX(MappingTable!$K$1:$S$1,1,SUMPRODUCT(IF(B2<INDIRECT("MappingTable!"&ADDRESS(MATCH($A2,MappingTable!$I$2:$I$15,0)+1,11)&":"&ADDRESS(MATCH($A2,MappingTable!$I$2:$I$15,0)+1,19)),1,0))+1)}

注意:这是一个数组公式,必须使用 Ctrl + Shift + 输入 。围绕上述公式的花括号 - {} - 将不会被用户输入,但会在如上所述提交公式后创建。

主要说明:
B2会引用结果表中的Contract Value

"MappingTable!"是一个硬编码值,应该是工作表的名称加上最后的感叹号。

$A2会在结果表中引用Case Type

MappingTable!$I$2:$I$15是映射表上标头的绝对引用。

在第一个11函数中找到的

ADDRESS是对映射表工作表上的列K的引用。它也可以写成COLUMN(K:K)

在第二个19函数中找到的

ADDRESS是对映射表工作表上的列S的引用。它也可以写成COLUMN(S:S)