按月计算标准偏差

calculate standard deviation by month

我正在尝试根据每日数据按月计算标准偏差。我使用了这个函数但它不起作用(它返回 %DIV/0!)。

{=STDEV.S(IF(AND(MONTH(data!$A:$A93)=MONTH($I22),YEAR(data!$A:$A93)=YEAR($I22)),data!H:H93,0))}

你能帮我解决这个问题吗?

谢谢

问题是 AND 不适用于数组公式。将其替换为乘法。另外,删除 if 的错误部分中的 0,这样它就不会破坏您的计算:

{=STDEV.S(IF((MONTH(data!$A:$A93)=MONTH($I22)) *
  (YEAR(data!$A:$A93)=YEAR($I22)), data!H:H93))}

问题是您不能在数组公式中使用 AND 运算符(因为它会尝试将所有值组合成一个 true 或 false)。

此外,使用 0 作为错误值也是在引入错误读数。使用 stdev.s 忽略的文本值。

试试看 {=STDEV.S(IF(MONTH(data!$A:$A93)=MONTH($I22),if(YEAR(data!$A:$A93)=YEAR($I22),data!H:H93,""),""))}

公式中使用的 AND 函数将合并月份和年份测试,而不是单独应用它们。使用级联 IF 来避免这种情况。此外,在 IF 为假的情况下使用零可能会给出错误的标准偏差,因为

STDEV.P(1,2,3,0,0,0,0,0) <> STDEV.P (1,2,3). 

试试这个:

=STDEV.S(IF(MONTH(data!$A:$A93)=MONTH($I22),IF(YEAR(data!$A:$A93)=YEAR($I22),data!H:H93,"NO"),"NO"))

公式中的"NO"可以是任意文本。当 Excel 的统计函数(SUM、AVG、STDEV 等)遇到文本值时,它们会跳过它而不是将其转换为零。

STDEV.P(1,2,3,"NO","NO","NO","NO","NO") == STDEV.P(1,2,3)!!!