按月计算标准差

时间:2015-08-05 21:28:33

标签: excel if-statement variance array-formulas

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

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

你能帮我这个吗?

由于

3 个答案:

答案 0 :(得分:1)

问题是AND对数组公式不起作用。用乘法替换它。另外,删除if的false部分中的0,这样就不会破坏你的计算:

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

答案 1 :(得分:0)

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

同样通过使用0作为假值,您将引入错误读数。使用文本值代替stdev.s忽略。

尝试    {=STDEV.S(IF(MONTH(data!$A$5:$A$3893)=MONTH($I22),if(YEAR(data!$A$5:$A$3893)=YEAR($I22),data!H$5:H$3893,""),""))}

答案 2 :(得分:0)

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

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

试试这个:

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

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

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