我有一个包含多列的大型数据集 - 每行都有一个案例类型和一个契约值。在另一张表格中,我有一个案例类型和值范围的映射表(如下所示),用于决定" Type"每行也应该分配。
例如,一个案例类型为1且合同价值为$ 20,000,000的行将是类型1 - 一个案例类型为3且值为$ 4,000,000的行将是类型3,因为它属于类型3的值范围(N4和O4)
我知道我可以在14个辅助列中对IF语句进行硬编码,以满足每个案例类型,然后组合不是空白的单元格,但我很想知道有更聪明的方法吗?
答案 0 :(得分:0)
首先,需要调整映射表数据集的标题。取消合并已合并的单元格,然后为每列添加标题。这样做应该会产生类似的结果:
然后我在第二个工作表上创建了一个结果表,如下所示:
它可能过于简单,但希望您可以根据需要修改公式。
现在这是我在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)
。