我想将输入转换为所需的输出。请帮助。 在输出中 - 列值应从最近(年)开始
答案 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的确切内容。 (或者至少比我更好。)
希望澄清一些部分,
汤姆