在同一语句中使用IF与OR,AND和通配符
我试图创build一个IF语句,将基本上看一个单元格,当前有一个macros,使查找列表中的多选下拉菜单。
IF语句所基于的字段是包含以下信息的下拉列表:
Android iOS PC/Mac All Devices Mobile Devices
用户可以select一个值或多个值。
IF语句将为真,如果该字段包含All Devices
或Mobile Devices
或Android
和iOS
在一起。 它还必须能够检查通配符,因为您可以select多个项目,因此可以是Android, PC/Mac, iOS
在这种情况下,它应该是真实的,因为Android
和iOS
都被选中。
实际的语句应该是什么,因为这是我正在使用的当前语句,但是我知道在这个语句中不能有通配符string:
=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中满足并存在以下任何scheme,则返回True语句。
场景1:所有传送方法场景2:移动设备场景3:Android和iOS
否则返回False语句。
Excel不支持所有公式中的通配符语句( 请参阅支持的公式 ),但如果构build一些公式,则可以实现类似的结果。
解决scheme1
例如,尝试使用FIND()
和IFERROR()
。 FIND()
会给你一个数字,告诉你search到的string在哪里。
因此, =FIND("-Android","tell me more about -Android")
,会给你一个数字。 如果它没有find任何东西,它会给你一个值的错误,你可能会捕获IFERROR
并返回一个特定的值,例如-1
。
然后build立OR
检查值大于-1
,你将有你所需要的。
解决scheme2
另一个select是使用SEARCH()
,它按照您期望的方式使用通配符:
=SEARCH("test*1";"aaaaaaaatestaaaa1")
将返回9. 在MSDN中search
解决scheme3
一般来说,有很多方法来build立这个。 正如在@ ImaginaryHuman072889的评论中所build议的那样,您可以使用ISNUMBER()
。 它的优势在于,它可以很好地处理错误,因此不需要错误捕获器。 像这样的东西可以正常工作:
=OR(ISNUMBER(SEARCH("a","b")),ISNUMBER(SEARCH("b","b")))
但是,如果你改变方法从第一个解决scheme与选项返回0
在出现错误的情况下,你会有这样的工作:
=OR(IFERROR(SEARCH("a","b"),0),IFERROR(SEARCH("b","c"),0))
这是相当数量的公式。
解决scheme4
一个非常有趣的解决scheme,避免@barry houdini提出的OR()
和IFERROR()
。 它只是返回0
,如果没有发现结果:
=COUNT(SEARCH({"a*a";"b*b";"c*c"},"I used to be abba fan."))
将返回2,因为a*a
和b*b
被发现在abba
。 这是如何包含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.")) )