Excel MATCH文本,但根据其他文本

时间:2018-03-28 17:08:15

标签: excel if-statement match

我有一个非常不优雅的公式,根据MATCH从字符串的左侧或右侧返回一个值。它有效,但我希望有人可以帮助使这更容易阅读。 该公式的一般解读是:

  • 如果找到(MATCH)" * TestSpec; *"
  • 然后将值返回到分号右侧
  • 否则,将值返回到分号的左侧
  • 此外:如果未显示值,则不执行任何操作

我的问题是:

  • IF语句本身只能返回LEFT或RIGHT
  • MATCH语句返回一个布尔值,因此无法确定LEFT或RIGHT
  • 2 IFERROR次陈述

这里有Excel公式的所有荣耀:

=IFERROR( 
   IFERROR(
     IF(MATCH("TestSpec;*",Table1[@Tags],0), 
       RIGHT(Table1[@Tags],LEN(Table1[@Tags])-FIND(";",Table1[@Tags])-1)
     ), \*End IF no alternate value if false*
     LEFT(Table1[@Tags],FIND(";",Table1[@Tags])-1) 
   ), \*First Error Catch*  
 "") \*Second Error Catch*

示例输入值:

  • 客户; TestSpec
  • 报告; TestSpec
  • 图表; TestSpec
  • ProgramOptions; TestSpec
  • TestSpec; Weatherzone的

输出应该只显示:

  • 客户
  • 报告
  • 图表
  • ProgramOptions
  • Weatherzone的

2 个答案:

答案 0 :(得分:1)

也许:

=IF(ISNUMBER(FIND("TestSpec",[@Tags])),TRIM(SUBSTITUTE(SUBSTITUTE([@Tags],"TestSpec",""),";","")),"")

答案 1 :(得分:0)

两个简单的替代品怎么样 -

=SUBSTITUTE(SUBSTITUTE(Table1[@Tags], "; TestSpec", ""), "TestSpec; ", "")

这适用于所有条件