2014-02-27 62 views
1

我目前正在尝试分析由PC和Monitors组成的资产清单电子表格。我目前遇到的问题是将PC与其两台显示器相关联。Excel - 具有多个条件的VLOOKUP

例如电子表格如下:

工作表Sheet1 - PC的

Monitor 1     Monitor 2 

Employee Name PC Tag Number  Serial ID  MonTag1 Tag Serial ID  MonTag2 Tag Serial ID 
John Smith   ABC123456  123456789  ABC123423  5465614   

表2中列出 - 所有资产:

Parent Asset (Tag) Tag Number Serial ID   Description  
ABC123456   ABC123423  5465614   24" Monitor 
ABC123456   XYZ123424  5456415   24" Monitor 

凡父资产(标签)=电脑吧代码

我已经完成了一个针对sheet2的PC标记号单元格的VLOOKUP找到连接到该PC的显示器的标签号码。然后,我根据sheet2对标签号进行了VLOOKUP查找序列号。

我现在需要为监视器2信息做另一个VLOOKUP,我需要公式查找与第一个VLOOKUP类似的父资产,但给第2个sheet2的值(XYZ123424)。

EG

Monitor 1     Monitor 2 

Employee Name PC Tag Number  Serial ID  MonTag1 Tag Serial ID  MonTag2 Tag Serial ID 
John Smith   ABC123456  123456789  ABC123423  5465614  XYZ123424 5456415 

回答

1

OK,我也想不出如何键入我的解决方案,所以这里是一个示例文件:https://app.box.com/s/4j79fu7vd93u0dc1rltg

我不得不说,我倾向于使用INDEX喜欢和匹配到VLOOKUP,以便组合(加上OFFSET)我用于此解决方案。

希望这是你的想法...请原谅约翰史密斯的同事的名字。我只需要快速提出一些建议,以确保它能与更多员工和洗牌设备清单一起工作。 :D

+0

完美!正是我需要的。 非常感谢! – user2531831

+0

看起来像这不工作了 – Apolo

+0

奇数。我只是试了一下,它的工作。也许再试一次,看看我的使用链接是否重新激活它。如果没有,我会找到另一个主机。 – TesseractE

1

已接受答案中的链接显然已过期,因此可能是时候更新此帖子了。

我不确定寻址多个退货还是多个标准更重要,但是建立一个INDEX formula与更新的AGGREGATE¹ function提供匹配的行号可以很容易地处理这两个。

AGGREGATE函数产生循环计算,与SUMPRODUCT function一样,但在应用全列参考时也会遇到计算滞后。出于这个原因,所有查找范围将通过挑选一列并确定数据的开始和结束来动态构建。该列的最后一行将用于所有其他查找列作为其自己列的结束点。

Sheet2上的主查找列(见下面的sample data image)是A列;例如[父资产标签]。此列中的值是基于文本的,因此以下内容将确定数据的范围。

Sheet2!$A$1:INDEX(Sheet2!$A:$A, MATCH("zzz", Sheet2!$A:$A)) 

如果[父资产标签]栏已经数字,这个公式是,

Sheet2!$A$1:INDEX(Sheet2!$A:$A, MATCH(1E+99, Sheet2!$A:$A)) 

表2 - 所有资产:

vlookup_multiple_criteria_data

工作表Sheet1 - 个人电脑列表

vlookup_multiple_criteria_formulas

聚合函数使用返回适当的行号INDEX其SMALL sub-function(例如)。要返回第二,第三等匹配行,所需要的就是提高SMALL的参数。

通过强制任何不匹配的行号进入#DIV/0!错误状态并忽略选项中的错误来检索匹配的行号。

工作表Sheet1 - 公式

在A2的公式是,

=IFERROR(INDEX(Sheet2!$D:$D, AGGREGATE(15, 6, ROW(Sheet2!$A$1:INDEX(Sheet2!$A:$A, MATCH("zzz", Sheet2!$A:$A)))/(Sheet2!$A$1:INDEX(Sheet2!$A:$A, MATCH("zzz", Sheet2!$A:$A))=$B6), COLUMN(A:A))), "") 

填权返回第二个显示器上市。这是通过使用COLUMN function来实现的。 COLUMN(A:A)返回但是被填充的权利变成COLUMN(B:B)返回。这提供了SMALL的k参数。

在D6的公式是,

=IFERROR(INDEX(Sheet2!B:B, AGGREGATE(15, 6, ROW(Sheet2!$A$1:INDEX(Sheet2!$A:$A, MATCH("zzz", Sheet2!$A:$A)))/(Sheet2!$A$1:INDEX(Sheet2!$A:$A, MATCH("zzz", Sheet2!$A:$A))=$B6), 1)), "") 

即检索第[MonTag1标签]。向右填入E6以获取第一个[序列号]。所述ķ参数复制使用式杆(不要复制细胞)至F6作为从D6式中,

=INDEX(Sheet2!B:B, AGGREGATE(15, 6, ROW(Sheet2!A$1:INDEX(Sheet2!A:A, MATCH("zzz", Sheet2!A:A)))/(Sheet2!A$1:INDEX(Sheet2!A:A, MATCH("zzz", Sheet2!A:A))=$B6), 2)) 

更改为。这将检索第二个监视器的[MonTag1标签]。向右填充G6以获取第二个[序列号]。

没什么。可以添加多个条件列作为TRUE/FALSE语句乘以生成#DIV/0!错误的分母。


¹AGGREGATE function用Excel 2010中引入的。它是不是在早期版本。
²IFERROR function与Excel 2007一起引入。它在早期版本中不可用。
 
与早期Excel版本的兼容性可以通过Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint来维护。