【问题标题】:Excel lookup in list of substringsExcel 在子字符串列表中查找
【发布时间】:2018-05-02 12:35:53
【问题描述】:

我正在 MS Excel 中寻找一个公式来检查包含句子的单元格是否匹配(至少)给定范围内的一个子字符串,如果匹配,则返回该子字符串值.

我可以用下面的例子来最好地解释它。如果句子(右侧)包含表(左侧)中定义的水果之一,则结果应返回(第一个)匹配的水果

最好,查找函数应该不区分大小写。此外,我无法使用 VBA - 它需要使用 Excel 原生函数来执行。

提前谢谢你!

【问题讨论】:

  • 会不会每句只有1个子串?如果没有,你想如何处理多个匹配项?
  • 是的,通常情况下,子字符串会足够复杂,以至于每个句子中只会出现一个子字符串。万一出现多个,只返回第一个找到的结果就可以了(类似于 VLOOKUP)。

标签: excel excel-formula


【解决方案1】:

您可以在数组公式中为此使用SEARCH。然后使用INDEXMATCHSEARCH 的结果:

=INDEX(Substrings, MATCH(TRUE, ISNUMBER(SEARCH(Substrings, Sentence)), 0))

因为它是一个数组公式,所以你需要在输入公式后使用Ctrl+Shift+Enter,而不是只按输入

编辑:我忘了提到上面的公式是区分大小写的。感谢 jblood94 提到它。以下公式使用LOWER 使其不区分大小写。

=INDEX(Substrings, MATCH(TRUE, ISNUMBER(SEARCH(LOWER(Substrings), LOWER(Sentence))), 0))

【讨论】:

  • 不错。您可以通过将LOWERUPPER 添加到SEARCH 中的子字符串和句子来使其不区分大小写
  • @jblood94 啊,其实我本来打算的,然后在路上的某个地方忘记了......
  • 谢谢你!我一直在寻找相同的方向,但不知道您可以在不使用 SUMPRODUCT 的情况下向 SEARCH 提供子字符串列表。据我所知,搜索不区分大小写,因此不需要 LOWER/UPPER。尽管总是返回子字符串列表的第一个值,但我确实有一个奇怪的问题,但会进一步研究。
  • @AdFundum 您的公式中有一个错误的部分。 ;0 不应在 SEARCH() 内,而应在 MATCH()
  • @Jerry 你是绝对正确的——轮到我让自己难堪了哈哈。再次感谢您的所有帮助,现在一切正常!
猜你喜欢
  • 2012-05-16
  • 2023-04-03
  • 2018-09-27
  • 2021-04-21
  • 1970-01-01
  • 2019-05-24
  • 2019-06-22
  • 1970-01-01
相关资源
最近更新 更多