Excel - 如何从大列表中查找通配符字符串

时间:2017-03-28 00:52:40

标签: excel string search excel-formula

我的数据表包括a)索引号和b)与这些索引号相关联的字符串。在我的模板中,用户将输入索引号,并显示与该索引号关联的字符串。

例如

1    Bag
1    Catsgsg
1    Dogs
1    oygg
2    Stackoverflow
2    tacks
2    Binoculars
2    all
.
.
.
1000   Bonobos
1000   Canopy
1000   Ascot

如果用户输入数字1000,我怎么能知道有一个b字而不是实际字?如何修复我的数组公式以使用通配符?

=INDEX(Partners!$D$2:$D$2227,MATCH(1,(Partners!$A$2:$A$2227=number)*(Partners!$C$2:$C$2227="b *"),0))

编辑:我能够调整callum的解决方案,并为多个通配符字符串设置公式帐户。

=INDEX(Partners!$D$2:$D$2227,MATCH(1,IFERROR(SEARCH(num&"A*",Partners!$A$2:$A$2227&Partners!$D$2:$D$2227),0)+IFERROR(SEARCH(num&"B*",Partners!$A$2:$A$2227&Partners!$D$2:$D$2227),0)+IFERROR(SEARCH(num&"C*",Partners!$A$2:$A$2227&Partners!$D$2:$D$2227),0),0))

2 个答案:

答案 0 :(得分:4)

只有特定的函数接受通配符,因此如果要使用*通配符,则需要使用其中一个。 SEARCH就是一个例子:

=INDEX(Partners!$D$2:$D$2227,MATCH(1,IFERROR(SEARCH(number&"b*",Partners!$A$2:$A$2227&Partners!$B$2:$B$2227),0),0))

或者,您可以完全避免使用通配符:

=INDEX(Partners!$D$2:$D$2227,MATCH(number&"b",Partners!$A$2:$A$2227&LEFT(Partners!$B$2:$B$2227,1),0))


都作为数组公式输入( Ctrl + Shift + Enter

答案 1 :(得分:2)

尝试,

=INDEX(B:B, AGGREGATE(15, 6, ROW(A$1:INDEX(A:A, MATCH(1E+99, A:A)))/((A$1:INDEX(A:A, MATCH(1E+99, A:A))=E6)*(LEFT(B$1:INDEX(B:B, MATCH(1E+99, A:A)), 1)=F6)), 1))

在下面提供的示例图片中,我已将 B 更改为 C ,以证明该公式不仅仅是返回第一个 1000 < / strong>发现。

enter image description here