![Excel 中的非布尔运算](https://linux22.com/image/1473289/Excel%20%E4%B8%AD%E7%9A%84%E9%9D%9E%E5%B8%83%E5%B0%94%E8%BF%90%E7%AE%97.png)
在 Excel 中,如果我有一些形式的布尔运算
{=SUM(IF((A1:A8="Google")*(B1:B8="Stanford")+(C1:C8="Columbia"),1,0))}
我知道这*
意味着AND()
+
OR()
在 A 列和 B 列中搜索“Google”和“Stanford”,或者在 C 列中搜索“Columbia”
但是有符号吗NOT()
?
答案1
*
相当于 ,相当于AND()
因为 的值为,的值为。 并且,由于函数变为, 反之亦然 ( ↔ ) ,因此一种简单的算术实现方法是。+
OR()
TRUE
1
FALSE
0
NOT()
TRUE
FALSE
1
0
NOT(x)
1-x
不幸的是,这只适用于0
和1
。如果你使用+
,OR()
并且表达式中有两个(或更多) TRUE 条件组合,你将得到2
或更大的值。好消息(你已经知道)是任何非零数字都算作TRUE
。坏消息是 是1-2
,-1
它是非零的,因此也是TRUE
。
另一种解决方案是逻辑表达式x=0
,例如,
(((A1:A8="Google")*(B1:B8="Stanford")+(C1:C8="Columbia"))=0)
如果x
是0
,这个逻辑表达式的计算结果为TRUE
。如果x
除 之外的任何值0
,表达式的计算结果为FALSE
。因此,x=0
函数为。NOT(x)
警告:如果将多个布尔值(TRUE
或)与、和组合,它们将转换为整数(数字);但如果您进行测试,最终会得到布尔值。因此,您可以这样写FALSE
*
+
-
number=number
=SUM((A1:A8="Google")*(B1:B8="Stanford"))
(不使用IF()
),因为是一个数字,但你不能这样做Boolean*Boolean
=SUM(((A1:A8="Google")*(B1:B8="Stanford"))=0)
因为SUM()
不适用于布尔值。但你可以使用它
- 在一个
IF()
, - 添加 0(
+0
),或 - 乘以 1 (
*1
)。