【发布时间】:2020-06-25 05:25:37
【问题描述】:
我有一个公式,它本质上是“搜索”索引并返回匹配数组。但是,当我引入通配符时,它不再起作用。我想要实现的是能够搜索字符串的一部分并返回其中包含该字符串的所有值。
例子:
- 单元格 A1:C10 分别包含项目名称、项目位置和描述。
- 单元格 D1 中包含“扳手”一词。
- 单元格 D2:D10 有一个公式,该公式将返回与其中的描述性单词扳手(套筒扳手、扳手、扭矩扳手等)匹配的所有匹配项。
以下公式是我正在使用的,它仅在我具有所描述的确切措辞时才有效。在这种情况下,它只会返回匹配的扳手,而不是其他类型的扳手。
INDEX(Table2[Item Location],SMALL(IF(("*"&$D$1&"*"="*"&Table2[Item Description]&"*"),MATCH(ROW(Table2[Item Description]), ROW(Table2[Item Description]),0), ""), ROWS($A$1:A1))))
我希望为所有扳手类型返回项目位置,而不仅仅是“扳手”。
【问题讨论】:
-
是什么让您认为在文件系统中工作的通配符在 Excel 中是相同的?
*只是 Excel 中的*。 -
如果您能找到子字符串,您必须执行
=NOT(ISERR(SEARCH("wrench","box wrench")))之类的操作才能获得TRUE或FALSE值。 -
如果有人有 O365,你可以试试:
=FILTER(Table2[Item Location],ISNUMBER(FIND("*"&D1&"*",Table2[Description])))。请注意,这样做会匹配 wrench 是子字符串的任何内容,甚至是 awrenchb。 -
不幸的是我没有使用 O365,这也是我的第一个想法。您也绝对可以在索引匹配中使用通配符,例如: =INDEX(Table2[Item location],MATCH(""&$D$1&"",Table2[Item Description],0))将返回包含您正在搜索的字符串的第一项。不幸的是,我似乎无法让它与我的上述公式配合。
-
如果没有 O365,请尝试以下数组输入公式:
=INDEX(Table2[Item Location],SMALL(IF(ISNUMBER(FIND("*"&D$1&"*",Table2[Description])),ROW(Table2[Description]),""),ROW(A1)))。向下拖动。
标签: excel excel-formula