所以几年前我写了一些代码,它生成了一个可以做一些简洁事情的电子表格。它涉及为直方图做一些奇怪的事情。我刚刚遇到需要为不同的项目更新/使用它,并且有一些代码我真的不完全理解。
基本上,它是一个逻辑运算符,处理命名范围,然后在sumproduct中使用。而对于我的生活,我并不完全明白为什么它有效,但确实如此。这是违规行。
=SUMPRODUCT((tblC62>G90)*(tblC62<=G91) * tblC2wgt2)
tblC62
和tblC2wgt2
引用了一些配对数据。 tblC62
中的每条记录与来自tblC2wgt2
的记录对齐。目的是创建加权直方图。 tblC2wgt2
提供了权重。数据按tblC62
值进行分箱,bin范围由G90
和G91
以及tblC62
定义。所以它会定义。
这很有效。我彻底检查了一下。我不明白为什么。这是tblC62
逻辑的倍增,这是最令人困惑的。
无论如何,我必须尽快向我的老板解释数学.....所以如果有人能向我解释这段代码是如何运作的,我将不胜感激。
答案 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然后将所有变化加起来。