【问题标题】:Excel - lookup multiple values in a string and return first oneExcel - 在字符串中查找多个值并返回第一个
【发布时间】:2020-01-22 16:50:45
【问题描述】:

我需要一个函数来查找文本中的组织缩写并返回第一个显示的缩写。我试图用一个嵌套的 if 子句来解决这个问题,但它有一个逻辑错误。

=IF(ISNUMBER(SEARCH("BZC";I5)); "Finanz"; IF(ISNUMBER(SEARCH("AZC" /1";I5));"IT";""))

它根据需要查找 BZC 和 AZC 并返回组织名称。但是,它不会返回字符串中的第一个匹配项。由于 BZC 是第一个查找,如果它在字符串中,则始终会返回它,即使它可能不是第一个 org 缩写。

excel的哪些功能可以解决这个问题?我基本上需要一个函数应该查找并返回找到的第一个变量的数组。

编辑:

我尝试实现 Justyna MK 的公式。除此之外,我仍然需要弄清楚公式的含义(iferror,mid,small)它在我的示例中返回#N/A。 这是有什么原因吗?

【问题讨论】:

  • 发布一些样本数据和基于该样本的期望结果。
  • 嗨 Julian,如我编辑的帖子中所述,尝试相同的公式,但在大括号内使用 , 而不是 ;。你也输入了这个公式,没有使用Ctrl+Shift+Enter(我发布的第一个公式是一个数组公式)。

标签: excel nested lookup


【解决方案1】:

希望我正确理解了您的要求。这是一个数组公式供您尝试(使用 Ctrl + Shift + Enter 输入):

=CHOOSE(MATCH(MID(A1,SMALL(IFERROR(SEARCH({"BZC","AZD","xxx"},A1),""),1),3),{"BZC","AZD","xxx"},0),"Finanz","IT","Other")

您可能需要将 , 更改为 ; 以匹配您的区域设置。

您可以通过修改大括号{ } 的内容以及扩展公式末尾的MATCH 结果来轻松扩展搜索项列表。

这是一些示例结果:

编辑:这是一个调整后的解决方案,它忽略了代码的长度(之前的解决方案假设代码始终是 3 个字符长)。这次它不是数组公式,因此您可以按原样输入。 另外,我怀疑您应该将大括号内的, 更改为;(它会修改从列到行分隔符的公式,因此它将停止工作)。剩下的 , 可以转换为 ;,如果这样的话。

=CHOOSE(MATCH(TRIM(LEFT(SUBSTITUTE(RIGHT(A1,LEN(A1)-SUMPRODUCT(SMALL(IFERROR(SEARCH({"BZC","AZD","XYZX/1","NP-HSD"},A1),""),1))+1)," ",REPT(" ",255)),255)),{"BZC","AZD","XYZX/1","NP-HSD"},0),"Finanz","IT","Other1","Other2")

结果:

【讨论】:

  • 这确实假设搜索词的长度为 3 个字母(或者在所有搜索词中,前 3 个字母组合是唯一的)。
  • 这是正确的@BigBen,这是主要的大假设(可能是错误的:-))。让我们等待 OP 确认并提供一些示例数据。
  • 感谢您迄今为止的帮助。我在此示例中更改了实际值。真实案例有不同长度的字符串。例如,“NH-P”、“NF-IB/1”、“NP-HSD”。所以当扫描像“X先生(NP-HSD),MRS。Y(NH-P)这样的文本时,公式应该返回NP-HSD的描述。现在我试图弄清楚你提供的方法的细节
  • 好吧,我明白你的意思了。让我调整我的答案以使公式通用(即无论代码的长度如何)。它应该在一分钟内准备好。
  • 我实施了新公式,但又得到了#N/A。我必须将花括号内的逗号更改为分号,否则会出现语法错误。所以公式看起来像这样 "=CHOOSE(MATCH(TRIM(LEFT(SUBSTITUTE(RIGHT(I49;LEN(I49)-SUMPRODUCT(SMALL(IFERROR(SEARCH({"BZC";"AZD";"XYZX/1"; "NP-HSD"};I49);"");1))+1);"";REPT("";255));255));{"BZC";"AZD";"XYZX/1 ";"NP-HSD"};0);"Finanz";"IT";"Other1";"Other2")" 而 I49 指向 "2292;#Puppe; Rico (NP-HSD);#2293;# Wilkow;Ina (NF-IB/2);#3239;#Bahadir;Isme (NF-IB/2);#2880;#Stein;Max (NH-P)" 所以 NP-HSD 通常应该被找到并返回
猜你喜欢
  • 2017-08-20
  • 2020-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-13
  • 1970-01-01
相关资源
最近更新 更多