Excel:在乘以PRODUCT之前添加数字(...)

时间:2017-11-30 09:12:24

标签: excel math excel-formula

我使用GEOMEAN(...)命令计算MS Excel中行的几何平均值。

什么是几何平均值:行可以是A1:A10

的几何平均值
 GEOMEAN(A1:A10)

是所有10个单元格值(乘以一起)的乘积,之后取第10个根(数学上:nth_root(A_1 x A_2 x ... x A_n))。

问题:只要没有单元格包含负值(实际上只要产品最终为正数),命令GEOMEAN(A1:A10)就可以正常工作。如果一个单元格具有负值,则从根本上取一个无效的操作,Excel会给出错误。

解决方案:我可以通过在执行+1000000之前为每个值添加足够大的数字GEOMEAN(A1:A10)以及之后减去-1000000来解决此问题从结果。这是纯几何均值的数学近似。

问题:但是如何在Excel中的每个值中添加+1000000?解决方案是创建一个全新的额外行,其中添加数字,然后在此行上执行GEOMEAN并从结果中减去数字。但我真的想避免创建一个新行,因为我有很多长数据集来执行此命令。

有没有办法在命令本身中添加数字?在它乘以之前将它添加到每个值上?有点像:

GEOMEAN(A1:A10+1000000)-1000000

避免解决的解决方案

根据@ ImaginaryHuman072889

的回答和讨论

事实证明,避免任何解决方法的工作命令是:

 IFERROR(GEOMEAN(A1:A10);-GEOMEAN(ABS(A1:A10)))

如果IFERROR发生了错误,那么我们就知道会出现一个否定结果,所以在这种情况下这是手动构建的。

但是:这并没有考虑@ ImaginaryHuman072889提到的情况,因为Excel似乎禁止所涉及的任何负数,而不仅仅是内部产品是否定的。例如,GEOMEAN(-2,-2)GEOMEAN(-2,-2,-2)都会在Excel中出错,即使它们在数学上都有效,分别给出结果2-2。要克服这个Excel问题,我们可以简单地手动写出完全相同的命令行:

 IFERROR(PRODUCT(A1:A10)^(1/COUNTA(A1:A10));-(PRODUCT(ABS(A1:A10))^(1/COUNTA(A1:A10)))))

我添加此解决方案以帮助任何具有相同问题的后来者。这在数学上是有效的,但-2-2具有几何平均值2的事实确实看起来有点奇怪,并且根本不像“#34;意味着&#34”的任何有用值;。据我所知,它在数学上仍然是合法的(WolframAlpha没有问题,维基百科的文章从未提及过一个标志。)

2 个答案:

答案 0 :(得分:2)

执行此操作的“解决方法”:

GEOMEAN(A1:A10+1000000)-1000000

完全错误。这绝对不等于GEOMEAN(A1:A10)

简单反例:

GEOMEAN({2,8})返回值4,即2和8的几何平均值。

GEOMEAN({2,8}+1)-1等于GEOMEAN({3,9})-1,约为4.196。

有效的解决方法是将GEOMEAN内的每个值乘以某个值,然后将结果除以该值。

简单示例:

GEOMEAN({2,8}*3)/3等于GEOMEAN({6,24})/3,即4。

然而,这种乘以常数的方法对你的情况没有帮助,因为这不会消除负值。

从数学上讲,正数和负数的几何平均数是一个虚数,这可能是Excel无法处理的原因。

示例:

2*-8 = -16

sqrt(-16) = 4i

因此,4i是2和-8的几何平均数。请注意它与GEOMEAN({2,8})具有相同的幅度,只是它是一个虚数。

所有这些......我建议你这样做:

我建议你返回两个结果,一个结果是几何平均值的幅度,另一个是几何平均值的阶段

幅度公式:

= GEOMEAN(ABS(A1:A10))

(注意,这是一个数组公式,所以你必须按 Ctrl + Shift + Enter 而不是输入此公式后输入。)ABS的使用会在GEOMEAN计算之前将所有负数转换为正数,从而保证正几何均值。

阶段的公式,我会做这样的事情:

= IF(PRODUCT(A1:A10)>=0,"Real","Imaginary")

如果几何平均值是实数,则显然返回Real,如果几何平均值是虚数,则返回Imaginary

修改

从技术上讲,我说的一些内容并不完全准确,尽管上面的幅度公式仍然存在。

我想澄清一些事情:

  1. 如果PRODUCT(data) 肯定(或零),那么data的几何平均值(或零)。
  2. 如果PRODUCT(data) 否定 ,如果data中的条目数奇数,那么几何data的平均值否定(但仍真实)。
  3. 如果PRODUCT(data) 否定 ,如果data中的条目数甚至,那么几何data的平均值 imaginary
  4. 那说......如果你希望这些公式在技术上更准确一些,我会修改为:

    调整后的公式:

    = GEOMEAN(ABS(A1:A10))*IF(AND(PRODUCT(A1:A10)<0,MOD(COUNT(A1:A10),2)=1),-1,1)
    

    调整阶段的公式:

    = IF(AND(PRODUCT(A1:A10)<0,MOD(COUNT(A1:A10),2)=0),"Imaginary","Real")
    

    如果几何平均值是实数,则返回精确的几何平均值(无论是正数还是负数),如果几何平均数是虚数,则返回正数值的正实数值。

答案 1 :(得分:0)

所以,我刚刚找到答案 - 虽然我不知道为什么会这样。

实际上可以做GEOMEAN(A1:A10+1000000)-1000000。但是,按enter会显示错误#VALUE。您必须单击control+shift+enter才能显示实际结果。

根据这个:https://www.mrexcel.com/forum/excel-questions/264366-calculating-geometric-mean-some-negative-values.html

如果有人对此有解释,我很感兴趣。