Excel数组公式每日差异计算St偏差

采用彭博公式:

=BDH("AAPL US Equity", "PX_LAST", "01/01/2017", "30/06/2017", "Array=True", "dts=h") 

在一个单元格中提供每日价格:

 [116.15,116.02, 116.61, 117.91, 118.99, 119.11, 119.75, 119.25, 119.04,...143.68,144.02] 

我的想法是在bloomberg公式中创build两组偏移1天的数据,或者最好是从每个数组的每一端删除一个数据。

 [116.15 [116.02 116.02 116.61 116.61 117.91 117.91 118.99 118.99 119.11 119.11 119.75 119.75 119.25 119.25] 119.04] 

然后我使用公式:

 =STDEV(SUMPRODUCT(1/([Array1]), [Array2])) 

但是我得到一个错误#DIV/1!

相当肯定我做了一些错误的数组作为sumproduct给出1的数字,我希望它的输出是一个数组来计算st.dev。

我正在寻找与每个每日回报创build一个数组:

 [-0.001119242 0.00508533 0.011148272 0.009159528 0.001008488 0.005373184 -0.004175365 -0.001761006 0.008064516 -8.33333E-05 -0.001750146 0.001836701 0.000666667 -0.000916056 0.015920647 0.000492287 8.20075E-05 -0.002624026] 

然后我可以使用STDEV()公式来获得标准偏差。

我想在一个单元格中这样做,以免浪费电子表格空间。

有任何想法吗?

让我们假设B2包含您的彭博公式返回以下string…

 116.15, 116.02, 116.61, 117.91, 118.99, etc... 

首先定义一个名称,以便以数组的forms返回这些价格…

 Name: Prices Refers to: =EVALUATE("{"&Sheet1!$B$2&"}") 

然后定义另一个名称,以便返回该数组中元素的数量…

 Name: PriceCnt Refers to: =COUNT(Prices) 

现在您可以使用下面的数组公式,需要使用CONTROL + SHIFT + ENTER确认…

 =STDEV((INDEX(Prices,N(IF(1,ROW(INDEX($A:$A,2):INDEX($A:$A,PriceCnt)))))-INDEX(Prices,N(IF(1,ROW(INDEX($A:$A,1):INDEX($A:$A,PriceCnt-1))))))/INDEX(Prices,N(IF(1,ROW(INDEX($A:$A,1):INDEX($A:$A,PriceCnt-1)))))) 

希望这可以帮助!