if-statement - 为什么与 Excel 中的单元格相比,If 语句的范围行为不同
问题描述
假设我想输出一个忽略“-”和“”单元格并返回任何其他内容的列。
=IF(OR(A2="",A2="-"),"",A2)
并且向下拖动有效,但为什么不能将其应用于一系列值?
例如:
=IF(OR(A2:A11="",A2:A11="-"),"",A2:A11)
只返回空白单元格。
同样:
=IF(OR((A2:A11="")*(A2:A11=""),(A2:A11="-")*(A2:A11="-")),"",A2:A11)
导致相同的结果。
谁能解释为什么会发生这种情况。
谢谢
解决方案
或接受数组并返回单个值
所以你可以这样做:
=OR(A2:A11="",A2:A11="-")
如果范围内的任何一个为空,它将返回一个 TRUE,""
如果没有一个为空,它将返回 FALSE。它不会像数组公式所需的那样返回 TRUE/FALSE 数组。
所以我们必须这样做:
=(A2:A11="")+(A2:A11="-")
这将返回一个数字数组。在这种情况下,要么0
要么1
。所以这个数组将是一个由 10 个数字组成的一维数组。
然后当包含在 if 中时,它将数组与数组进行比较。
这就是为什么数组公式,包括新的动态数组公式 FILTER 不能与OR
or一起使用,AND
而必须分别使用+
or *
。
因此,在您的情况下,它需要是:
=IF((A2:A11="")+(A2:A11="-"),"",A2:A11)
推荐阅读
- blazor - Blazor 客户端验证 Internet 连接状态
- python - 如何使用 scipy.integrate.odeint 正确实现具有力时间相关变量的强制质量弹簧系统 ode 求解器
- java - 对菜单栏的切换做出反应
- c - 为所有未初始化的变量设置默认值
- excel - VLOOKUP (INDEX-MATCH) 返回第 n 个结果,带有 n 个变量
- elasticsearch - ElasticSearch 仅检索与单个文档中的术语匹配的列表元素
- ruby-on-rails - 如何让 has_and_belongs_to_many 进行批量插入?
- scala - 带有时间戳字段的 Elasticsearch 和 Spark 写入错误
- java - 运行测试时如何让maven找到本地jar
- c++ - libtins Sniffer undefined