然后VLookup嵌套If

时间:2017-01-20 15:24:37

标签: excel vlookup nested-if

我有2个工作簿,一个名为AIH的计划表。两者都有具有唯一标识符的代理。

在AIH工作簿中,我有工作组,其中代理人已接受过培训。他们的范围从基础,一般,中级,专业,非调度,HP,MB。如果代理人已经接受过培训,则标记为一个X.

我希望能够根据两个工作簿中的唯一标识符,在计划工作簿中提取这些工作组之间的“最高培训价值”。

我的嵌套if如下:

=IF([headcount.xlsx]Sheet1!$N$2="X", _
    [headcount.xlsx]Sheet1!$N$1,IF([headcount.xlsx]Sheet1!$M$2="X", _
    [headcount.xlsx]Sheet1!$M$1,IF([headcount.xlsx]Sheet1!$L$2="X", _
    [headcount.xlsx]Sheet1!$L$1,IF([headcount.xlsx]Sheet1!$K$2="X", _
    [headcount.xlsx]Sheet1!$K$1,IF([headcount.xlsx]Sheet1!$J$2="X", _
    [headcount.xlsx]Sheet1!$J$1,IF([headcount.xlsx]Sheet1!$I$2="X", _
    [headcount.xlsx]Sheet1!$I$1,IF([headcount.xlsx]Sheet1!$H$2="X", _
    [headcount.xlsx]Sheet1!$H$1,"Not Trained")))))))

所以这个步枪穿过我的牢房寻找X并显示训练最高的工作组,因为我向后穿过柱子。

问题是我需要做一个vlookup来匹配列中的唯一标识符,这样我就可以根据代理ID(唯一标识符)提取正确的信息,我不确定如何执行此操作,因为vlookup要我返回特定列的值。

excel非常新,所以更详细的回答对我来说更好。

提前致谢!

2 个答案:

答案 0 :(得分:0)

你的公式是这样的:

=INDEX([headcount.xlsx]Sheet1!$H$1:$N$1,MATCH("Y",INDEX([headcount.xlsx]Sheet1!H:H,MATCH(A2,[headcount.xlsx]Sheet1!A:A,0)):INDEX([headcount.xlsx]Sheet1!N:N,MATCH(A2,[headcount.xlsx]Sheet1!A:A,0))))

A2是您要在[headcount.xlsx]Sheet1!工作表上查找的唯一标识符,[headcount.xlsx]Sheet1!A:A是该工作表中找到唯一标识符的列。

然后可以将其复制到列中。

答案 1 :(得分:0)

不确定你是否还需要解释,但我还是会对它进行解释。

如果有人发现错误,请告诉我,我会解决。

查看“外部”MATCH(),寻找“Y”的那个,定义是......

MATCH(value-to-find,range-to-look-in,[match-type])

一个键是不存在的 - 也就是说,@ ScottCraner没有指定匹配类型,所以它默认为1,意味着返回小于或等于“的最大值” Y“在这种情况下。在寻找最大值的过程中,它继续寻找一个“Y”,直到它用完了值,这总是最右边的列,其中有一个“X”。它的工作原理是因为“X”小于“Y”,所有值都是“X”。虽然它也可以寻找“X”而不是“Y”。 (不确定为什么斯科特使用“Y”。)

这就解释了“外部”MATCH()正在做什么。但它在哪里看?

范围外观由两个INDEX()函数组成,提供范围的[upper] left和[lower] right。第一个INDEX()返回列H中的单元格,该列位于具有您要查找的标识符(A2)的行中。第二个INDEX()返回位于同一行的N列中的单元格。您会注意到关联的“内部”MATCH()函数的匹配类型为0,这意味着它们找到了第一个完全匹配。

因此,如果你的标识符(A2)出现在第20行,范围看起来变为H20:N20,然后外部MATCH()寻找最右边的“X”在该范围内,外部INDEX()返回相应的标题(H和N之间的顶行)。

您必须使用IFERROR()或其他IF函数来处理根本没有“X”的情况,如原始公式的最后部分(“不是”训练“)。