我正在使用以下索引匹配代码和行函数,以避免在我的结果中返回重复项。该公式目前在我的工作表“查找供应商表”中搜索我的列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
答案 0 :(得分:0)
首先,在这个大小的范围内,使用error子句操作数组公式效率非常低,并且会强制Excel执行比实际需要更多的计算。如果您有兴趣,请参阅此处获取解释:
其次,使用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中的那个),直到你开始得到结果的空白。
此致