sumproduct中命名范围的逻辑运算符,加权直方图(excel)

时间:2016-05-24 18:09:28

标签: excel

所以几年前我写了一些代码,它生成了一个可以做一些简洁事情的电子表格。它涉及为直方图做一些奇怪的事情。我刚刚遇到需要为不同的项目更新/使用它,并且有一些代码我真的不完全理解。

基本上,它是一个逻辑运算符,处理命名范围,然后在sumproduct中使用。而对于我的生活,我并不完全明白为什么它有效,但确实如此。这是违规行。

=SUMPRODUCT((tblC62>G90)*(tblC62<=G91) * tblC2wgt2)

tblC62tblC2wgt2引用了一些配对数据。 tblC62中的每条记录与来自tblC2wgt2的记录对齐。目的是创建加权直方图。 tblC2wgt2提供了权重。数据按tblC62值进行分箱,bin范围由G90G91以及tblC62定义。所以它会定义。

这很有效。我彻底检查了一下。我不明白为什么。这是tblC62逻辑的倍增,这是最令人困惑的。

无论如何,我必须尽快向我的老板解释数学.....所以如果有人能向我解释这段代码是如何运作的,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

它使用布尔值True / False的固有值。在数学中使用它们时,它们会自动恢复为1/0的值。

所以:

=SUMPRODUCT((tblC62>G90)*(tblC62<=G91) * tblC2wgt2)

(tblC62>G90)为真时,其值为1;如果为假,则为0.与(tblC62<=G91)

相同

因此,当两者都为真时,我们得到1 * 1等于1。如果其中任何一个为假,我们会得到0 * 1,等于0

然后将结果乘以tblC2wgt2。因此当其中一个或两个都为假时,它是0 * tblC2wgt2 which = 0。当两者都成立时,我们得到1 * tblC2wgt2 = tblC2wgt2

Sumproduct然后将所有变化加起来。