在同一语句

时间:2017-11-22 12:27:18

标签: excel excel-formula

我正在尝试创建一个IF语句,它基本上会查看一个当前有一个宏的单元格,从查找列表中启用多选下拉列表。

IF语句所基于的字段是包含以下信息的下拉列表:

Android
iOS
PC/Mac
All Devices
Mobile Devices

用户可以选择一个值或多个值。

IF语句将为真IF,该字段包含All Devices OR Mobile Devices OR Android AND iOS。它还必须能够检查通配符,因为您可以选择多个项目,因此可以是Android, PC/Mac, iOS,在这种情况下它应该是真的,因为已选择AndroidiOS

实际声明应该是什么,因为这是我正在使用的当前声明,但我知道你不能在这个声明中使用通配符字符串:

=IF(OR(C7="*-iOS*",C7="*-Android*",C7="Mobile Device",C7="All Delivery Methods",AND(C7="*-iOS*",C7="*-Android*")),"Mobile DTC/ALL","STB (VRP) HD, DEVICE (UVP) HD")

由于

编辑:如果满足以下任何方案并且存在于单元格C7中,则返回True语句。

场景1:所有交付方式 场景2:移动设备 场景3:Android和iOS

否则返回False语句。

1 个答案:

答案 0 :(得分:3)

Excel不支持所有公式(see supported formulas)的通配符语句,但如果构建一个公式,则可以获得类似的结果。

解决方案1 ​​

例如,尝试将FIND()IFERROR()一起使用。 FIND()会给你一个数字,告诉你搜索到的字符串的位置。

因此,=FIND("-Android","tell me more about -Android")会给你一个数字。 如果它没有找到任何内容,它将为您提供值错误,您可以使用IFERROR来获取该值,并返回特定值,例如-1

然后构建OR检查大于-1的值,您就会得到所需的内容。

解决方案2

另一种选择是使用SEARCH(),它以您期望的方式支持通配符:

=SEARCH("test*1";"aaaaaaaatestaaaa1")

将返回9. SEARCH in MSDN

解决方案3

一般来说,有很多方法可以构建它。正如@ ImaginaryHuman072889的评论中所建议的那样,您可以使用ISNUMBER()。它的优点是,它可以正常运行,因此您不需要错误捕获器。这样的东西可以正常工作:

=OR(ISNUMBER(SEARCH("a","b")),ISNUMBER(SEARCH("b","b")))

但是,如果您在第一个解决方案中使用返回0的选项更改方法,以防出现错误,那么您也可以使用此方法:

=OR(IFERROR(SEARCH("a","b"),0),IFERROR(SEARCH("b","c"),0))

与公式数量完全相同。

解决方案4

一个非常有趣的解决方案,避免使用@barry houdini提出的OR()IFERROR()。如果找不到结果,它只返回0

=COUNT(SEARCH({"a*a";"b*b";"c*c"},"I used to be abba fan."))
由于在a*a中找到b*babba

将返回2。这是如何包含OP原始问题的AND()

=AND(
    COUNT(SEARCH({"a*a";"b*b";"c*c"},"I used to be abba fan.")),
    COUNT(SEARCH({"party*so";"am not"},"but now I am not."))
)