Excel:索引匹配使用通配符匹配单元格中的所有文本的搜索条件?

时间:2014-12-04 12:10:01

标签: excel formula lookup

我正在使用以下索引匹配代码和行函数,以避免在我的结果中返回重复项。该公式目前在我的工作表“查找供应商表”中搜索我的列B,其中它比较了表1中单元格D11中输入的值,并在列{{1}中生成供应商名称的结果在'查找供应商表'上。

所以在'查找供应商表'中我有以下布局:

B

目前,我的公式是在工作表1的单元格Name Description Supplier A Catering & Events Supplier B Hotels Supplier C Legal Solicitor Services 中输入的文本的左侧搜索五个字符。我这样做是因为如果有人要输入酒店而不是酒店,那么结果仍然存在。

但是现在我遇到了一个问题,因为如果我要在我的单元格中输入合法D11,我会得到结果D11,但如果我要输入律师,我就不会得到任何结果

我需要一种能够使用某种通配符的方式,我想这将允许我输入法律或律师,但仍然可以获得结果

那么有没有办法让我的公式扫描整个单元格来搜索匹配的单词,在这种情况下是合法的还是律师?

我真的很擅长excel,所以我不确定我需要做什么,但我真的很感激任何帮助。提前谢谢。

Supplier C

1 个答案:

答案 0 :(得分:0)

首先,在这个大小的范围内,使用error子句操作数组公式效率非常低,并且会强制Excel执行比实际需要更多的计算。如果您有兴趣,请参阅此处获取解释:

https://superuser.com/questions/812727/look-up-a-value-in-a-list-and-return-all-multiple-corresponding-values/812848#812848

其次,使用ROW($ B $ 1:$ B $ 10004)将 value_if_true 子句传递给INDEX是有风险的。例如,如果您决定在某个时候修改范围,例如至$ B $ 2 :$ B $ 10005,并将公式的上述部分修改为ROW($ B $ 2 :$ B $ 10005),您可能会感到失望看到你的公式不再给出正确的结果。更严格的是如下构造:

ROW($B$1:$B$10004)-MIN(ROW($B$1:$B$10004))+1

或(有些人更喜欢):

ROW($B$1:$B$10004)-ROW($B$1)+1

第三,对于SMALL的 k 参数,ROWS($ 1:1)比ROW(1:1)更严格。

总的来说,首先在某个单元格中输入这个(非数组)公式,例如C1:

=COUNTIF('Look Up Supplier Sheet'!$B$1:$B$10004,"*"&$D$11&"*")

然后是所需的数组公式**:

=IF(ROWS($1:1)>$C$1,"",INDEX('Look Up Supplier Sheet'!$A$1:$D$10004,SMALL(IF(ISNUMBER(SEARCH(" "&$D$11&" "," "&'Look Up Supplier Sheet'!$B$1:$B$10004&" ")),ROW($B$1:$B$10004)-MIN(ROW($B$1:$B$10004))+1),ROWS($1:1)),1))

将此公式复制下来(虽然不是C1中的那个),直到你开始得到结果的空白。

此致