【问题标题】:Excel - how to find wildcard string from large listExcel - 如何从大列表中查找通配符字符串
【发布时间】:2017-08-20 21:28:48
【问题描述】:

我的数据表由 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 字但不是实际字,我怎么能拉出 bonobo 这个字?如何修复我的数组公式以适用于通配符?

=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))

【问题讨论】:

    标签: excel string search excel-formula


    【解决方案1】:

    只有特定的函数接受通配符,因此如果您想使用* 通配符,则需要使用其中之一。 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)

    【讨论】:

    • 感谢 callum,正是我想要的。
    • 是否可以搜索通配符数组?例如,如果你想要任何以 ab、c 或 d 开头的单词...你可以搜索(number&{"b*", "c*", "d*"},......)
    • 嗨@excelmonkey93,很高兴为您提供帮助。不幸的是,搜索功能无法实现这一点,但它可能可以通过其他一些复杂的公式来实现。我可能会节省自己的时间,并为每个搜索值 b、c、... 等设置单独的公式
    • 谢谢,我能弄明白。使用解决方案编辑帖子
    【解决方案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 找到了。

    【讨论】:

      猜你喜欢
      • 2016-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多