我使用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没有问题,维基百科的文章从未提及过一个标志。)
答案 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
。
修改强>
从技术上讲,我说的一些内容并不完全准确,尽管上面的幅度公式仍然存在。
我想澄清一些事情:
PRODUCT(data)
肯定(或零),那么data
的几何平均值正(或零)。PRODUCT(data)
否定 而,如果data
中的条目数奇数,那么几何data
的平均值否定(但仍真实)。PRODUCT(data)
否定 而,如果data
中的条目数甚至,那么几何data
的平均值 imaginary 。那说......如果你希望这些公式在技术上更准确一些,我会修改为:
调整后的公式:
= 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
才能显示实际结果。
如果有人对此有解释,我很感兴趣。