Excel:在乘以PRODUCT之前添加数字(…)
我正在计算MS Excel中使用GEOMEAN(...)
命令行的几何平均数。
什么是几何平均数 :该行可以是A1:A10
。 用几何平均数
GEOMEAN(A1:A10)
是所有10个单元值的乘积(相乘在一起)之后第10个根(在math上: nth_root(A_1 x A_2 x ... x A_n)
)。
问题 :只要没有单元格包含负值(实际上只要产品结束为正),命令GEOMEAN(A1:A10)
可以正常工作。 如果一个单元格有一个负值,那么采取根在math上是一个无效的行为和Excel提供了一个错误。
解决scheme:我可以通过在执行GEOMEAN(A1:A10)
之前向每个值添加一个足够大的数字(如+1000000
GEOMEAN(A1:A10)
,然后从结果中减去-1000000
来解决此问题。 这是对纯几何平均值的math近似。
问题:但是,如何在Excel中为每个值添加+1000000
? 解决办法是创build一个新的额外的行,添加数字,然后在这一行做GEOMEAN
,并从结果中减去数字。 但我真的想避免创build一个新的行,因为我有很多长的数据集来执行此命令。
有没有办法在命令本身添加数字? 将它添加到每个值之前,它是乘以? 有些东西是:
GEOMEAN(A1:A10+1000000)-1000000
解决scheme,以避免变通
基于@ ImaginaryHuman072889的回答和讨论
事实certificate,避免任何变通的工作命令是:
IFERROR(GEOMEAN(A1:A10);-GEOMEAN(ABS(A1:A10)))
如果IFERROR
出现错误,那么我们知道会出现一个负面结果,所以在这种情况下手动构build。
但是 :这并没有考虑@ ImaginaryHuman072889提到的情况,因为Excel似乎禁止涉及任何负数,而不仅仅是内部产品是否定的。 例如, GEOMEAN(-2,-2)
以及GEOMEAN(-2,-2,-2)
在Excel中给出了错误,尽pipe它们在math上都是有效的,分别给出结果2
和-2
。 为了克服这个Excel问题,我们可以简单地写出完全相同的命令行:
IFERROR(PRODUCT(A1:A10)^(1/COUNTA(A1:A10));-(PRODUCT(ABS(A1:A10))^(1/COUNTA(A1:A10)))))
我添加这个解决scheme来帮助任何有同样问题的旁观者。 这在math上是有效的,但-2
和-2
具有几何平均值2
事实似乎有点奇怪,并且完全不像“平均值”的任何有用值。 据我所知,它仍然是math上的合法的( WolframAlpha没有问题,维基百科的文章从未提及过)。
你这样做的“解决方法”:
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。
然而,这种乘以常数的方法并不能帮助你的情况,因为这不会消除负面的价值。
在math上,正数和负数的几何平均数是一个虚数,这大概是为什么Excel无法处理它。
例:
2*-8 = -16 sqrt(-16) = 4i
因此,4i是2和-8的几何平均数。 请注意,它与“ GEOMEAN({2,8})
大小相同,只不过是一个虚数。
所有这些说…这是我build议你做的事情:
我build议你返回两个结果,一个结果是几何平均值的大小 ,另一个是几何平均值的相位 。
公式大小:
= GEOMEAN(ABS(A1:A10))
(注意,这是一个数组公式,所以在input这个公式之后,你必须按Ctrl + Shift + Enter而不是Enter )。在GEOMEAN
计算之前,使用ABS
将所有的负数转换为正值,保证一个正的几何意思。
公式阶段,我只是做这样的事情:
= IF(PRODUCT(A1:A10)>=0,"Real","Imaginary")
如果几何平均值是实数,那么显然返回实数,如果几何平均值是虚数,则返回虚数。
编辑
从技术上说,我所说的一些不完全确切,虽然上面的数量公式仍然存在。
有些事情我想澄清:
- 如果
PRODUCT(data)
是正数 (或零),则data
的几何平均数是正数 (或零)。 - 如果
PRODUCT(data)
是负数, 并且如果data
的条目数是奇数 ,那么data
的几何平均数是负数 (但仍然是实数 )。 - 如果
PRODUCT(data)
是负数, 并且如果data
的条目数是偶数 ,则data
的几何平均数是虚数的 。
这就是说…如果你想要这些公式在技术上更准确一点,我会修改为:
调整后的公式为:
= 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")
如果几何平均值是实数,则返回精确的几何平均值(无论是正还是负),如果几何平均值是虚数,则返回具有正确幅度的正实数值。
所以,我刚刚find答案 – 虽然我不知道为什么这个工作。
做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
如果有人有这个解释,我很感兴趣。