我想查找给定单元格是否包含列表中包含的值。然后我想使方程动态化,以便根据列表中的哪个项目产生不同的输出。 B列(索引/匹配?)中应该有一个等式,它根据列A中的值是否包含C列中的一个代码,从列D返回一个值。
Column A Column B Column C Column D
ABC12D Equation=$40 ABC $40
XYZ15Q Equation=$20 MNO $30
MNO26P Equation=$30 XYZ $20
答案 0 :(得分:2)
使用你的设置,你可以使用INDEX / MATCH和你的FIND作为阵列形式:
=INDEX($D$1:$D$3,MATCH(TRUE,ISNUMBER(FIND($C$1:$C$3,A1)),0))
作为一个数组公式,需要在退出编辑模式时使用Ctrl-Shift-Enter而不是Enter来确认。
答案 1 :(得分:0)
excel函数中的or语句测试一系列逻辑语句。你想要的是更接近以下内容的东西。
{=TEXTJOIN(", ",TRUE,IF(IFERROR(FIND(B1,A$1:A$5),"ERROR")<>"ERROR",ROW(A$1:A$5),""))}
对于您正在测试的B列中的每个项目,此功能可以粘贴在C列中。
这是一个数组函数,在单元格中输入后,需要使用Ctrl + Shift + Enter才能使其正常工作
此功能将在A1:A5范围内的B1中搜索文本,并报告它找到B1中用逗号和空格分隔的文本的库存。在您的示例中,它会返回1
。如果abc也存在于A列的第三个条目中,那么它将返回1, 3
就像故障一样,
FIND(B1,A$1:A$5)
在A1:A5范围内的B1中搜索文本。它返回一个包含文本位置的数组,在您的示例中,它将返回{1,#VALUE,#VALUE}
FIND
函数无法找到指定的文本,因此会返回#VALUE
错误。 IFERROR(____,"ERROR")
捕获#VALUE
并将其替换为“ERROR”。它会将您的数组修改为{1,"ERROR","ERROR"}
IF(___,ROW(A$1:A$5),"")
,则if语句"ERROR"
将返回数组的行,否则返回空格。这会将您的数组修改为{1,"",""}
。TEXTJOIN(", ",TRUE,_____)
语句将数组连接在一起,用逗号和空格分隔。 TRUE
参数跳过数组的空白部分。如果要根据发生的行返回自定义值,可以将ROW(A$1:A$5)
替换为具有相应值的范围。