【发布时间】:2010-05-19 14:51:55
【问题描述】:
在 Excel 中,我们有 VLOOKUP 函数,该函数在表中的列中查找值,然后在找到时从该表中的给定列中返回值。如果没有,则会产生错误。
是否有一个函数只根据是否在列中找到值而返回 true 或 false?
【问题讨论】:
标签: excel excel-formula excel-2003
在 Excel 中,我们有 VLOOKUP 函数,该函数在表中的列中查找值,然后在找到时从该表中的给定列中返回值。如果没有,则会产生错误。
是否有一个函数只根据是否在列中找到值而返回 true 或 false?
【问题讨论】:
标签: excel excel-formula excel-2003
您可以将 VLOOKUP() 包装在 IFERROR() 中
编辑:在 Excel 2007 之前,使用=IF(ISERROR()...)
【讨论】:
=IF(ISERROR(Vlookup(...)),"not found","found") 将所有重要位保留在 Vlookup 函数中。
您仍然需要将其包装在 ISERROR 中,但您可以使用 MATCH() 而不是 VLOOKUP():
返回一个相对位置 数组中与 a 匹配的项 以指定顺序指定的值。 使用 MATCH 而不是 LOOKUP 之一 在您需要该职位时发挥作用 范围内的项目而不是 项目本身。
这是一个完整的示例,假设您要在一系列单元格中查找单词“key”:
=IF(ISERROR(MATCH("key",A5:A16,FALSE)),"missing","found")
FALSE 是强制精确匹配所必需的,否则它将寻找最接近的值。
【讨论】:
只需使用 COUNTIF !编写和计算比其他建议快得多。
编辑:
假设如果在 C 列中找到 B1 的值,则单元格 A1 应该是 1,否则应该是 2。你会怎么做?
我会说如果在 C 列中找到 B1 的值,那么 A1 将为正数,否则为 0。这很容易用公式:=COUNTIF($C$1:$C$15,B1) 完成,这意味着:计算范围内的单元格 C1:C15等于B1。
您可以将 COUNTIF 与 VLOOKUP 和 IF 结合使用,这比使用 2 次查找 + ISNA 快得多。 IF(COUNTIF(..)>0,LOOKUP(..),"Not found")
一点谷歌搜索会带给你大量的examples。
【讨论】:
COUNTIF 是最简单的答案。 +1
我们一直在使用
if(iserror(vlookup,"n/a",vlookup))
Excel 2007 引入了 IfError,它允许您进行 vlookup 并在出现错误时添加输出,但这对 2003 没有帮助...
【讨论】:
你可以使用:
=IF(ISERROR(VLOOKUP(lookup value,table array,column no,FALSE)),"FALSE","TRUE")
【讨论】:
ISNA 是最好的功能。我已经做了。我希望所有值不在数组中的单元格有条件地格式化为某种颜色。
=ISNA(VLOOKUP($A2,Sheet1!$A:$D,2,FALSE))
【讨论】: