2017-10-04 140 views
2

我有一个包含多个列的大型数据集 - 每一行都有一个案例类型和一个合同值。在另一张工作表上,我有一个映射表(如下所示),用于决定应该为每行分配“Type”的案例类型和值范围。嵌套的IF Excel - 替代

例如,案例类型1和合同价值20,000,000美元的行将是类型1 - 案例类型3的值为4,000,000美元的行将是类型3,因为它落在类型3(N4和O4)

我知道我可以在14个帮助列中硬编码IF语句来完成每个Case Type,然后合并非空白的单元格,但我很想知道是否有更智能的方法来实现这一点?

enter image description here

+1

使用两个匹配的索引;一个以range_lookup为0,另一个以range_lookup为-1。 – Jeeped

+0

奎因,你有没有得到一个可用的答案你的问题? – TotsieMae

回答

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 + 移致力于 + 输入。围绕上述公式的花括号 - {} - 不会由用户输入,但会在按上述方式提交公式后创建。

重点提示:
B2将引用Contract Value在结果表中。

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

$A2将在您的结果表中引用Case Type

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

11,在第一个ADDRESS函数中找到,是对映射表工作表上K列的引用。它也可以写成COLUMN(K:K)

19(在第二个ADDRESS函数中找到)是对映射表工作表上列S的引用。它也可以写成COLUMN(S:S)