Excel formula Excel:查找字符串中包含的矩阵单元格,并返回相同的行但不同的列
我想检查矩阵的哪个单元格值包含在“Product name”中,并在同一行中返回一个值,但在不同的列中返回一个值(a列) 我使用此函数,但它只检查一列,而不检查矩阵:Excel formula Excel:查找字符串中包含的矩阵单元格,并返回相同的行但不同的列,excel-formula,Excel Formula,我想检查矩阵的哪个单元格值包含在“Product name”中,并在同一行中返回一个值,但在不同的列中返回一个值(a列) 我使用此函数,但它只检查一列,而不检查矩阵: =INDEX(A$11:A$13, AGGREGATE(15, 6, ROW($1:$3)*SIGN(MATCH("*"&A$11:A$13&"*", B2, 0)), 1)) 简单地说,我想按产品名称计算汽车制造商。 此公式可行,但相当长,添加到矩阵中只会增加长度: =INDEX($A$11:$A$13, IF
=INDEX(A$11:A$13, AGGREGATE(15, 6, ROW($1:$3)*SIGN(MATCH("*"&A$11:A$13&"*", B2, 0)), 1))
简单地说,我想按产品名称计算汽车制造商。
此公式可行,但相当长,添加到矩阵中只会增加长度:
=INDEX($A$11:$A$13, IFERROR(AGGREGATE(15, 6, ROW($1:$3)*SIGN(MATCH("*"&A$11:A$13&"*", A2, 0)), 1),IFERROR(AGGREGATE(15, 6, ROW($1:$3)*SIGN(MATCH("*"&$B$11:$B$13&"*", A2, 0)), 1),IFERROR(AGGREGATE(15, 6, ROW($1:$3)*SIGN(MATCH("*"&$C$11:$C$13&"*", A2, 0)), 1),IFERROR(AGGREGATE(15, 6, ROW($1:$3)*SIGN(MATCH("*"&$D$11:$D$13&"*", A2, 0)), 1),0)))))
它基本上是一列一列地查找,直到找到一个有效的答案。如前所述,如果需要更多的新模型,则需要为数据矩阵中的每一列添加IFEROR公式
更快、更短的方法是UDF:
Function FINDINSTRING(Srch, rng) As String
Dim strArr() As String
Dim findArr()
Dim i&, j&, k&
findArr = rng.Value
strArr = Split(Srch, " ")
For i = LBound(strArr) To UBound(strArr)
For j = LBound(findArr, 1) To UBound(findArr, 1)
For k = LBound(findArr, 2) To UBound(findArr, 2)
If UCase(strArr(i)) = UCase(findArr(j, k)) Then
FINDINSTRING = findArr(j, 1)
Exit Function
End If
Next k
Next j
Next i
FINDINSTRING = "#N/A"
End Function
将其放置在工作簿附加的模块中时:
从Excel中点击Alt-F11。在该窗口中,转到插入==>模块。将上述代码粘贴到该模块中
这是一个更好的解释与图片
可以直接从工作表中调用它。换句话说:
=FINDINSTRING(A2,$A$11:$D$13)
那么数据矩阵的大小就无关紧要了。只有一个问题,在保存文件(.xlsm)并重新打开后,宏函数停止工作并返回#NAME?@SeviDavidov send me you工作簿。斯科特。craner@gmail.com. “我来看看。”塞维达维多夫:你启用宏了吗?我派你来的。现在我启用了宏及其工作,谢谢@Scott Craner。