Vlookup 在返回值之前检查所有值吗?

Vlookup 在返回值之前检查所有值吗?

我有这个项目,我必须从不同的工作表中检查值并复制旁边单元格的值。

第 1 页

Billy
Paul
Mike
Jesse

第 2 页

Billy |
Paul | X
Jesse | 
Billy | X
Mike | X

我正在处理 Sheet 1,同时从 Sheet 2 获取值。

我只需要返回第 2 列中的值,我可以使用 =IFERROR(VLOOKUP(B148,LateReports!B:C,2,0),"-")

但是由于 Billy 第一次没有 X,因此停止查找并返回空白。我如何检查整个列表,比较单元格值,如果等于“X”则返回它?

答案1

您可以按列 A 然后按降序对列 B 对您的查找表进行排序。在这种情况下,VLOOKUP 将首先找到带有 X 的“Billy”。

答案2

您可以使用 Index(Match) 来“继续搜索”。它将返回一个像 VLOOKUP 一样的值。

{=INDEX(Sheet2!$A$1:$C$5,MATCH(1,(Sheet2!$A$1:$A$5=Sheet1!A1)*(Sheet2!$B$1:$B$5="X"),0),3)}

声明 INDEX、Sheet2!$A$1:$C$5 的数组区域,包括日期列。

在 INDEX 中调用 MATCH,使用“1”作为查找值,并且“1”为“TRUE”

(Sheet2!$A$1:$A$5=Sheet1!A1) 将等于 1,(Sheet2!$B$1:$B$5="X") 也将等于 1,当我们将它们相乘时将返回 1 并返回“TRUE”值。

我们用“0”结束 MATCH,这表明我们想要“1”和我们相乘的第二个参数完全匹配。

使用您想要引用的数组的列来关闭 INDEX,在本例中,C 列为“3”,它应该包含您在注释中所述的日期。

最重要的是,不要直接按 ENTER,而是使用 CTRL+SHIFT+ENTER,这样会将公式 {formula} 括在花括号中

Excel 表格的外观应如下所示。

Sheet1- Two columns
Billy|INDEX(MATCH)
Paul|drag your INDEX(MATCH)
Mike|drag your INDEX(MATCH)
Jesse|drag your INDEX(MATCH)

Sheet2- Three Columns including Date in "C"
Billy||42450
Paul|X|42450
Jesse| |42451
Billy|X|42452
Mike|X|42452

答案3

怎么样(假设您的 Sheet2 列在 A 列和 B 列,而您的 Sheet1 列在 A 列),在 Sheet1 的 B 列中输入以下内容:

=IF(COUNTIFS(Sheet2!A:A,A1,Sheet2!B:B,"X")>0,"I found it!","I didn't find it")

如果您知道您想要专门查找“X”,则此方法有效,然后计算它找到两个测试的次数:(a) 它是 Bill(因为他的名字在 A1 中;当您向下复制公式时,它会执行 A2、A3 等,这将是 Paul 和 Mike 等等),以及 (b) 有一个 X。

但是,如果你不知道它叫“X”,并且想知道它是什么调用,那么您就会遇到问题,因为 Excel 如何知道要给您哪一行?空白行?带有“X”的行,还是带有“Y”的行,等等?

如果你要找的不是“x”,而是任何非空白行,那么请按照上面的方法操作,但是

=IF(COUNTIFS(Sheet2!A:A,A1,Sheet2!B:B,"<>""")>0,"I found it!","I didn't find it")

它会查找不等于任何值的东西(“” 表示不等于任何值,<>“” 表示不等于任何值,“<>”“” 表示不等于任何值,用引号括起来以使其起作用。

我认为它们无论如何都是有效的,但它们只能告诉你某物是否存在,而不是它是什么:-)


另一种方法是制作一个数据透视表(插入 -> 数据透视表),然后使用过滤器过滤掉空白,并将名称和 X 列放入行标签中。然后,您可以在数据透视表的列上执行 VLOOKUP,尽管如果每个人有多个非空白条目,这仍然无济于事,因为它仍然不知道要查找哪个。

但是您可能会发现数据透视表实际上已经给出了您想要的答案而不需要任何其他公式,这取决于您的需要。

相关内容