具有匹配的INDEX(具有查找/搜索和位置)

时间:2019-09-19 20:11:30

标签: arrays excel indexing match formula

我有一个相当复杂的问题,我需要在长字符串中找到短字符串的匹配项,而搜索仅限于长字符串的前几个字符。

漫长的搜索发现了这个数组公式:

{=IFERROR(INDEX($A$8:$A$9,MATCH(1,--NOT(NOT(FIND($A$8:$A$9,A1))),0)),"no match")}

这样我就可以参与其中了,但是如果在前几个字符中找不到该值,我就不想获得匹配项,而且我不知道该怎么做。

如何修改上面的公式以将搜索限制在该值的前几个字符之内,从而使该公式与单元格A3和A6中的值不匹配,从而在Col-C中返回所需的结果?还是我应该使用其他公式?

这里是数据样本(我的数据很复杂,但是原理是相同的):

    A (value)           B (result with current formula)     C (desired result)
1   1apple1234567890    apple                               apple
2   12apple123456789    apple                               apple
3   123456apple12345    apple                               no match
4   1peach1234567890    peach                               peach
5   12peach123456789    peach                               peach
6   123456peach12345    peach                               no match
7   
8   apple
9   peach

screenshot

编辑: 在研究了公式的工作原理之后,我可以使用FIND数组的IF标准来达到预期的结果:

{=IFERROR(INDEX($A$8:$A$9,MATCH(1,--NOT(NOT(IF(FIND($A$8:$A$9,A2)>3,0,1))),0)),"no match")}

2 个答案:

答案 0 :(得分:1)

使用搜索并向左移动:

=IFERROR(INDEX(A:A,AGGREGATE(15,7,ROW($A$9:$A$10)/(ISNUMBER(SEARCH($A$9:$A$10,LEFT(A2,4+LEN($A$9:$A$10))))),1)),"no match")

用满足以下条件的字符数替换4+the first few characters of the value

enter image description here

答案 1 :(得分:0)

此数组公式(使用Ctrl + Shift + Enter)可以正常工作:

{=IFERROR(INDEX($A$8:$A$9,MATCH(1,--NOT(NOT(IF(FIND($A$8:$A$9,A2)>3,0,1))),0)),"no match")}