首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在同一语句中使用IF with OR,AND and通配符

在同一语句中使用IF with OR,AND and通配符
EN

Stack Overflow用户
提问于 2017-11-22 12:27:17
回答 1查看 3.8K关注 0票数 1

我正在尝试创建一个IF语句,它将主要查看一个单元格,该单元格当前有一个宏,可以从查找列表中下拉多个选择。

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

代码语言:javascript
复制
Android
iOS
PC/Mac
All Devices
Mobile Devices

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

如果该字段包含All DevicesMobile DevicesAndroidiOS,则IF语句将为真。它还必须能够检查通配符,因为您可以选择多个项,因此可以是Android, PC/Mac, iOS,在这种情况下,应该是正确的,因为AndroidiOS都被选中了。

实际语句应该是什么,因为这是我使用的当前语句,但我知道您不能在该语句中包含通配符字符串:

代码语言:javascript
复制
=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语句。

EN

回答 1

Stack Overflow用户

发布于 2017-11-22 12:33:40

Excel不支持所有公式(见支持的公式)上的通配符语句,但如果您构建了一些公式,则可以获得类似的结果。

解决方案1

例如,尝试将FIND()IFERROR()结合使用。FIND()将给出一个数字,告诉您搜索的字符串位于何处。

因此,=FIND("-Android","tell me more about -Android")会给你一个数字。如果它找不到任何东西,它将给出一个值错误,您可以用IFERROR捕获这个值,然后返回一个特定的值,例如-1

然后构建OR检查值,其值大于-1,您将得到所需的值。

解决方案2

另一种选择是使用SEARCH(),它以预期的方式取代通配符:

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

将返回9. 在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提出了一个非常有趣的解决方案,既避免了OR()也避免了IFERROR()。如果没有从结果中找到任何内容,它只返回0

代码语言:javascript
复制
=COUNT(SEARCH({"a*a";"b*b";"c*c"},"I used to be abba fan."))

将返回2,因为a*ab*b正在abba中找到。这是如何包含OP的原始问题的AND()

代码语言:javascript
复制
=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."))
)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47434729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档