条件Vlook up而不使用VBA

时间:2015-03-05 16:16:27

标签: vlookup

我想将输入转换为所需的输出。请帮助。 在输出中 - 列值应从最近(年)开始

Please click this to see data

1 个答案:

答案 0 :(得分:0)

不幸的是,VLOOKUP无法满足这一要求。但是INDEX函数可以。

以下是关于如何使用它的好读物: http://fiveminutelessons.com/learn-microsoft-excel/use-index-lookup-multiple-values-list

这对你的spreedsheet有效,如果你的输入表从没有标题的A1开始,你的输出表从H3开始,带有第一个ID。

您可以通过将输入表的第一列复制并粘贴到H列然后删除重复项来获得此信息。

{=IF(ISERROR(INDEX($A$1:$C$7,SMALL(IF($A$1:$A$7=$H$3,ROW($A$1:$A$7)),ROW(1:1)),3)),"",
INDEX($A$1:$C$7;SMALL(IF($A$1:$A$7=$H$3,ROW($A$1:$A$7)),ROW(1:1)),3))}

让我们一步一步看看公式:

花括号告诉excel这是一个数组公式,有趣的部分是:当你插入公式(没有大括号)时按shift + ctrl + enter,excel会知道这是数组公式。

 'error at formula?, then blank, else formula
=IF(ISERROR(....),"",...)

当您自动填充此公式时,您可能不知道查找变量的实例数是多少。因此,当您将此公式放在4个单元格中,但只有3个条目时,此位将使单元格保持空白而不是出错。


INDEX($A$1:$C$7,SMALL(IF($A$1:$A$7=$H$3,ROW($A$1:$A$7)),ROW(1:1)),3))

$ A $ 1:$ C $ 7是您的数据矩阵。您的ID(在您的情况下为125和501)将在$ A $ 1:$ A $ 7中找到。 ROW(1:1)是绝对(!)rowID,3是绝对(!)列id。因此,当您移动输入表时,必须更改这些值。

上面的链接中很好地描述了SMALL和INDEX的确切内容。 (或者至少比我更好。)

希望澄清一些部分,

汤姆