特定文本字符串的IF函数

时间:2014-07-23 16:50:04

标签: excel if-statement formula

我正在尝试编写一个公式,它接受一个单词并通过excel中的IF函数处理它,公式中的值列表。我现在的问题是我有大型,X大型和1X大型文本。 X-Large和1X-Large是唯一的字符串,需要IF功能才能区分这两者。

这是我到目前为止所拥有的。

=if(or(isnumber(search("Small",af2)),ISNUMBER(SEARCH("Medium",AF2)),ISNUMBER(SEARCH("Large",AF2)),,ISNUMBER(SEARCH("X-Large",AF2))),"Small",or(isnumber(search("1X-Large",af2)),isnumber(search("2X-Large",af2)),isnumber(search("3X-Large",af2)),isnumber(search("4X-Large",af2))),"1X-Large")

我无法理解为什么它会显示错误,只有在工作时才会显示错误。

感谢所有帮助

1 个答案:

答案 0 :(得分:0)

你当前的公式应该不起作用,它应该给你一个关于太多参数的错误。功能细分:

=if(
  or(isnumber(search("Small",af2)),ISNUMBER(SEARCH("Medium",AF2)),ISNUMBER(SEARCH("Large",AF2)),,ISNUMBER(SEARCH("X-Large",AF2))),
  "Small",
  or(isnumber(search("1X-Large",af2)),isnumber(search("2X-Large",af2)),isnumber(search("3X-Large",af2)),isnumber(search("4X-Large",af2))),
  "1X-Large"
)

您不能在IF中使用4个参数。你需要最多3个。也许你的意思是:

=if(
  or(isnumber(search("Small",af2)),ISNUMBER(SEARCH("Medium",AF2)),ISNUMBER(SEARCH("Large",AF2)),,ISNUMBER(SEARCH("X-Large",AF2))),
  "Small",
  IF(
    or(isnumber(search("1X-Large",af2)),isnumber(search("2X-Large",af2)),isnumber(search("3X-Large",af2)),isnumber(search("4X-Large",af2))),
    "1X-Large"
  )
)

但这并不能解决您关于X-Large部分的问题。为了满足这一需求,您可以先检查X-Large系列是否存在,然后检查其他系列。

=IF(
  OR(ISNUMBER(SEARCH("1X-Large",AF2)),ISNUMBER(SEARCH("2X-Large",AF2)),ISNUMBER(SEARCH("3X-Large",AF2)),ISNUMBER(SEARCH("4X-Large",AF2))),
  "1X-Large",
  IF(
    OR(ISNUMBER(SEARCH("Small",AF2)),ISNUMBER(SEARCH("Medium",AF2)),ISNUMBER(SEARCH("Large",AF2)),ISNUMBER(SEARCH("X-Large",AF2))),
    "Small"
  )
)

虽然你可以用这个缩短它:

=IF(
  OR(ISNUMBER(SEARCH({"1X-Large","2X-Large","3X-Large","4X-Large"},AF2))),
  "1X-Large",
  IF(
    OR(ISNUMBER(SEARCH({"Small","Medium","Large","X-Large"},AF2))),
    "Small"
  )
)

在一行......

=IF(OR(ISNUMBER(SEARCH({"1X-Large","2X-Large","3X-Large","4X-Large"},AF2))),"1X-Large",IF(OR(ISNUMBER(SEARCH({"Small","Medium","Large","X-Large"},AF2))),"Small"))