Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel-VLOOKUP多准则_Excel_Vlookup - Fatal编程技术网

Excel-VLOOKUP多准则

Excel-VLOOKUP多准则,excel,vlookup,Excel,Vlookup,我目前正试图分析一个由个人电脑和显示器组成的资产清单电子表格。我现在的问题是把一台电脑和它的两个显示器联系起来 例如,电子表格如下所示: 第1张-个人电脑列表 Monitor 1 Monitor 2 Employee Name PC Tag Number Serial ID MonTag1 Tag Serial ID MonTag2 Tag Serial ID John Smith ABC1234

我目前正试图分析一个由个人电脑和显示器组成的资产清单电子表格。我现在的问题是把一台电脑和它的两个显示器联系起来

例如,电子表格如下所示:

第1张-个人电脑列表

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
其中父资产(标记)=计算机条形码

我已经针对表2对PC标签号单元格进行了VLOOKUP,以查找连接到该PC的显示器的标签号。然后,我针对表2对标签号进行了
VLOOKUP
,以查找序列号

我现在需要做另一个
VLOOKUP
对于监视器2信息,我需要公式来查找与第一个
VLOOKUP
类似的父资产,但在表2中给出第二个监视器的值(XYZ123424)

例如


好的,我想不出如何键入我的解决方案,所以这里有一个示例文件:

我不得不说,我倾向于使用索引和匹配,而不是VLOOKUP,所以这个组合(加上偏移量)就是我在这个解决方案中使用的


希望这就是你的想法。。。请原谅约翰·史密斯的同事的名字。我只是需要快速想出一些办法,以确保它能与更多的员工和一份混乱的设备清单协同工作D

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

我不确定是解决多个返回还是多个条件更重要,但使用提供匹配行号的更新版本构建一个应用程序可以轻松处理这两个问题

聚合函数会产生循环计算,但在应用全列引用时也会出现计算滞后。因此,通过选择一列并确定数据的开始和结束,将动态构建所有查找范围。此列的结束行将用于所有其他查找列,作为其自身列的结束点

Sheet2上的主要查找列(见下文)是A列;e、 g.[父资产标签]。此列中的值基于文本,因此以下内容将确定数据的范围

Sheet2!$A$1:INDEX(Sheet2!$A:$A, MATCH("zzz", Sheet2!$A:$A))
如果[Parent Asset Tag]列为数字,则此公式为

Sheet2!$A$1:INDEX(Sheet2!$A:$A, MATCH(1E+99, Sheet2!$A:$A))
第2页-所有资产:

表1-个人电脑列表

AGGREGATE函数使用其属性(例如15)返回要索引的适当行号。要返回第二行、第三行等匹配行,只需提高SMALL的k参数

通过将任何不匹配的行号强制放入
#DIV/0中来检索匹配的行号6选项编码>错误状态并忽略错误

第1页-公式

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))), "")
填写右键返回第二个监视器列表。这是通过使用<代码>列(A:A)
返回1,但右键填充将成为
列(B:B)
返回2。这将提供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以获取第一个[序列ID]。使用公式栏(不复制单元格)将公式从D6复制到F6,如下所示:

=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))
将k参数更改为2。这将检索第二个监视器的[MonTag1]标记。向右填充G6以拾取第二个[序列ID]

没什么。可以将多个条件列添加为与分母相乘的真/假语句,从而生成
#DIV/0错误


⑨Excel 2010中引入了。它在早期版本中不可用。
²是在Excel 2007中引入的。它在早期版本中不可用。


可以使用保持与早期Excel版本的兼容性。

Perfect!!正是我需要的。非常感谢你!古怪的我刚试过,效果很好。也许再试一次,看看我使用链接是否重新激活了它。如果没有,我会找另一个主人。
=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))