我正在处理一个产品电子表格,该电子表格需要将零件编号映射到描述。零件号存储在两个单独的工作表中:“零件号”(正式定义的编号列表)和“自定义组件”(尚未列入正式列表的零件)。
我要搜索第一个列表,但是如果找不到任何内容,请搜索第二个列表。解决方案相当明显...
=if(isna(vlookup(A3,'Part Numbers'!A:C,2,false)),vlookup(A3,'Custom Components'!A:E,2,false),vlookup(A3,'Part Numbers'!A:C,2,false))
...,除了通常在很长的“零件号”列表(17k项以上)上两次运行vlookup
函数的事实。
我想要的一个函数说:“这是一个表达式列表;返回产生有效值的第一个表达式。”这样,vlookup
只需在“零件编号”列表上运行一次。看起来像这样:
=firstValid(vlookup(A3,'Part Numbers'!A:C,2,false)),vlookup(A3,'Custom Components'!A:E,2,false))
有这样的动物吗? (我显然可以定义一个自定义JavaScript函数,但是由于额外的开销,这可能会使速度变慢。)
答案 0 :(得分:0)
iferror()
功能是我所需要的:
IFERROR 如果不是错误值,则返回第一个参数;否则,返回第二个参数(如果存在);如果第二个参数不存在,则返回空白。
因此,该函数应为:
=iferror(vlookup(A3,'Part Numbers'!A:C,2,false)),vlookup(A3,'Custom Components'!A:E,2,false))