【发布时间】:2010-07-20 00:47:20
【问题描述】:
试图破译一些 Excel 公式,我看到一些东西,例如 SUMPRODUCT(--Left(...)...)
-- 在做什么?自然对我来说似乎是递减,但找不到任何文档。
【问题讨论】:
标签: excel excel-formula
试图破译一些 Excel 公式,我看到一些东西,例如 SUMPRODUCT(--Left(...)...)
-- 在做什么?自然对我来说似乎是递减,但找不到任何文档。
【问题讨论】:
标签: excel excel-formula
双破折号称为双一元运算符。
试试这个链接:Why use -- in SUMPRODUCT formulae
具体来说:
SUMPRODUCT() 忽略非数字条目。比较返回一个非数字的布尔 (TRUE/FALSE) 值。 XL 在算术运算(例如,TRUE + 0 = 1)中自动将布尔值强制转换为数值(分别为 1/0)。
强制该值最有效的方法是首先应用一元减号运算符,将 TRUE/FALSE 强制为 -1/0,然后再次应用它来否定该值,例如 +1/0。
单个一元运算符 (-) 将 true/false 值强制转换为 -1/0。通过使用双一元运算符,我们再次将值强制为 1/0。
【讨论】:
一元运算符 (-) 是将真/假语句转换为 -1/0 的简写方法。
单个运算符会将 -(true) 转换为 -1,因此使用双一元运算符将其转换回 1:
-(-(true)) = -(-(1)) = 1
-(-(false)) = -(-(0)) = 0
【讨论】:
我使用 SUMPRODUCT 已经有一段时间了,并且一直使用 * 符号而不是 --。我确定我问过你问过的同样问题,但我不记得他们给我的原因,但有人告诉我,真的不需要--,因为 sumproduct 在没有它。
不管怎样,=sumproduct(()*()*()*()) 一直对我有用,而且不那么令人困惑。
【讨论】:
excel中的布尔值TRUE和FALSE被视为1和0,但我们需要将它们转换。要将它们转换为数字 1 或 0,请进行一些数学运算。一元运算符否定布尔值(数学运算),因此将布尔值转换为数字。同样适用于 TRUE * FALSE = 0
【讨论】: